sys.argv[]的用法
1、sys.argv是获取运行python文件的时候命令行参数,且以list形式存储参数2、sys.argv[0]表示代码本身文件路径特别注意:接下来这个例子,sys.argv[0]就应该是文件名test.py,不应包含路径!!!下面我们通过一个极简单的test.py程序的运行结果来说明它的用法import sysa=sys.argv[0]print(a)将test.p......
一、介绍
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)非正常退出
更多推荐
所有评论(0)