• Python踩坑之 sys.argv[-1]代表什么


    平台:win10+python 3.7.0

    一、sys说明:

    sys.argv这个函数是我们写python脚本中最常用的一个函数.

    sys是Python的一个「标准库」,也就是官方出的「模块」,是「System」的简写,封装了一些系统的信息和接口。

      官方的文档参考:https://docs.python.org/2/library/sys.html

      中文版文档参考:http://xukaizijian.blog.163.com/blog/static/170433119201111625428624/

    二、实例说明:

    通过实例具体说明:

    创建实例一test01.py,如下:

    1 #conding:utf-8
    2 import sys #导入sys模块
    3 print(sys.argv[0]) # 打印sys.argv的第0个参数
    4 
    5 # 来运行一下这个脚本,我们随便给他点参数,1个,2个,3个或更多都行.
    6 #py -3 test01.py a b c d e f
    7 #test01.py
    8 #得出结果就显示当前脚本名,这里我们就可以得出第一个结论.
    实例一test01.py

     得出结果就显示当前脚本名,这里我们就可以得出第一个结论:sys.argv[0] 返回是的脚本

    现在我们修改一下,得到实例二test02.py, 如下:

    1 #conding:utf-8
    2 import sys #导入sys模块
    3 print(sys.argv[1]) # 打印sys.argv的第1个参数
    4 
    5 #执行如下:
    6 #py -3 test02.py a b c d e f 
    7 #a
    实例二test02.py

    得出结果就是第一个参数的值.通过这样类推,我们就知道sys.argv参数的效果了.

    返回脚本本身的名字及给定脚本的参数.

    了解shell脚本编程的可以这样理解这些参数,sys.argv[0] 就是shell 脚本中的basename ,而sys.argv[1]....就是shell中的$1,$2.....

    sys.argv也支持python字符串中的切片,我们还是先修改代码,测试如下——实例三test03.py、实例四test04.py和实例五test05.py

    1 #conding:utf-8
    2 import sys #导入sys模块
    3 print(sys.argv[1:]) # 打印sys.argv的第1个参数及其以后所有参数,返回的值是一个list
    4 
    5 #结果如下:
    6 #py -3 test03.py a b c d e f 
    7 #['a', 'b', 'c', 'd', 'e', 'f']
    实例三test03.py
    1 #conding:utf-8
    2 import sys #导入sys模块
    3 print(sys.argv[1:3]) # 打印sys.argv的第1个参数到第三个参数,不包含第三个参数,返回的值是一个list
    4 
    5 #结果如下:
    6 #py -3 test04.py a b c d e f 
    7 #['a', 'b']
    实例四test04.py
     1 #conding:utf-8
     2 import sys #导入sys模块
     3 print(sys.argv[1:5:2])
     4 print(sys.argv[-1])
     5 print(sys.argv[::-1])
     6 
     7 #结果如下:
     8 #py -3 test05.py a b c d e f 
     9 # ['a', 'c']
    10 # f
    11 #['f', 'e', 'd', 'c', 'b', 'a', '1234.py']
    实例五test05.py

    上面示例使用了字符串的切片方法,需要先了解字符串的切片知识见我另一篇博客

    通过如上示例,应该明白sys.argv的使用和暂时的结果.

    sys.argv就是将程序本身和给程序参数返回一个list,这个list中的索引为0的就是程序本身.因此,里面的给sys.argv的参数就是list索引.

    三、解决问题:

    sys.argv[-1]返回的是调用test**.py后紧跟的所有参数中最后一个,是一个list中的最后一个元素,而这个list是这样的:它是sys模块下的一个全局变量,第一个元素是模块名sys.argv[0]、后面是依次传入的参数sys.argv[1]、sys.argv[2]sys.argv[-1]、sys.argv[-2]。

  • 相关阅读:
    js中const,var,let区别与用法
    poi excel 导出
    spring 实体类 date类型字段处理
    mysql 1449 : The user specified as a definer ('root'@'%') does not exist
    pjax学习
    上传文件 connection reset
    mysql连接问题
    Scala Actor Model
    Scala 隐式转换
    Scala Trait+Match+Case class+偏函数
  • 原文地址:https://www.cnblogs.com/Alliswell-WP/p/Python_sys-argv.html
Copyright © 2020-2023  润新知