一、介绍

1、sys.argv 是获取运行python文件的时候命令行参数,且以list形式存储参数

2、sys.argv[0]表示代码本身文件路径

下面我们通过一个极简单的test.py程序的运行结果来说明它的用法

import sys
a=sys.argv[0]
print(a)

将test.py保存在c盘的根目录下。

在程序中找到 ‘运行’->点击->输入"cmd"->回车键   进入控制台命令窗口(如下图),先输入cd c:\   (作用是将命令路径改到c盘根目录),然后输入test.py运行我们刚刚写的程序:

这就是0指代码(即此.py程序)本身的意思。输出的就是test.py。

如果输入的是python c:\test.py,输出就是c:\test.py

然后我们将代码中0改为1 :

a=sys.argv[1]

保存后,再从控制台窗口运行,这次我们加上一个参数,输入:test.py what

 得到的结果就是我们输入的参数what


二、简单的例子

#输入
$ python ./test.py aa bb cc

import sys

  
def main(argv): 
    print(argv[0])                  aa      
    print(argv[1])                  bb
    print(argv[1:])                 ['bb', 'cc']
    print(argv[1][1:])              b
  
    print('sys.argv[0]:',sys.argv[0])        #test1.py
    print('sys.argv[1]:',sys.argv[1])        #aa
    print('sys.argv[1:]:',sys.argv[1:])     #['aa', 'bb', 'cc']
  
    print('sys.argv:',sys.argv)                 #['test1.py', 'aa', 'bb', 'cc']
    print('type(sys.argv):',type(sys.argv))     #<class 'list'>
    print('len(sys.argv):',len(sys.argv))       #4 
 
    return 0  
  
if __name__ == '__main__':  
    sys.exit(main(sys.argv[1:]))  #sys.exit(0)正常退出, sys.exit(1)非正常退出

从上面输出结果可以看出,

sys.argv[0]是当前所执行的脚本,并且输入什么就是什么,输入test.py就是test.py,输入./test.py就是./test.py

index 1以后的才是所传入的参数。用sys.argv[1:]可以获取到所有的参数,并且输出到一个列表里面。


三、输入为 --numa=1  --numb=2 形式和  --numa 1  --numb  2 形式

 如果 python test.py --numa=1 --numb=2

则sys.argv[1:] 为 [test.py, --numa=1, --numb=2]

 如果 python test.py --numa 1 --numb 2

则sys.argv[1:] 为 [test.py, --numa, 1, --numb, 2]

#输入
$ python test.py --numa=1 --numb=2

import sys
def main(argv): 
    print(argv[0])                  --numa=1    
    print(argv[1])                  --numb=2
    print(argv[1:])                 ['--numb=2']
    print(argv[1][1:])              -numb=2
  
    print('sys.argv[0]:',sys.argv[0])        #test1.py
    print('sys.argv[1]:',sys.argv[1])        #--numa=1
    print('sys.argv[1:]:',sys.argv[1:])     #['--numa=1', '--numb=2']
  
    print('sys.argv:',sys.argv)                 #['test1.py', '--numa=1', '--numb=2']
    print('type(sys.argv):',type(sys.argv))     #<class 'list'>
    print('len(sys.argv):',len(sys.argv))       #3 
 
    return 0  
  
if __name__ == '__main__':  
    sys.exit(main(sys.argv[1:]))  #sys.exit(0)正常退出, sys.exit(1)非正常退出

==============================================================================

#输入
$ python test.py --numa 1 --numb 2

import sys
def main(argv): 
    print(argv[0])                  --numa   
    print(argv[1])                  1
    print(argv[1:])                 ['1', '--numb', '2']
    print(argv[1][1:])              
  
    print('sys.argv[0]:',sys.argv[0])        #test1.py
    print('sys.argv[1]:',sys.argv[1])        #--numa
    print('sys.argv[1:]:',sys.argv[1:])     #['--numa', '1', '--numb', '2']
  
    print('sys.argv:',sys.argv)             #['test1.py', '--numa', '1', '--numb', '2']
    print('type(sys.argv):',type(sys.argv))     #<class 'list'>
    print('len(sys.argv):',len(sys.argv))       #5
 
    return 0  
  
if __name__ == '__main__':  
    sys.exit(main(sys.argv[1:]))  #sys.exit(0)正常退出, sys.exit(1)非正常退出

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐