python之sys.argv[]的用法

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

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

特别注意:接下来这个例子,sys.argv[0]就应该是文件名test.py,不应包含路径!!!

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

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

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

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

得到的结果是C:\test.py,这就是0指代码(即此.py程序)本身的意思。其实应该只是test.py

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

a=sys.argv[1]

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

得到的结果就是我们输入的参数what,看到这里你是不是开始明白了呢。

那我们再把代码修改一下:

a=sys.argv[2]

保存后,再从控制台窗台运行程序,这次多加几个参数,以空格隔开:

test.py a b c d e f

得到的结果为[‘b’, ’c’, ’d’, ’e’, ’f’]

完整的例子

#!/usr/bin/env python  
import sys
 
  
def main(argv): 
    print(argv[0])             
    print(argv[1]) 
    print(argv[1:]) 
    print(argv[1][1:]) 
  
    print('sys.argv[0]:',sys.argv[0])        #脚本名字  
    print('sys.argv[1]:',sys.argv[1])        #脚本第一个参数  
    print('sys.argv[1:]:',sys.argv[1:])  
  
    print('sys.argv:',sys.argv)            #脚本的所有参数
    print('type(sys.argv):',type(sys.argv))
    print('len(sys.argv):',len(sys.argv))       #脚本的参数个数  
 
    return 0  
  
if __name__ == '__main__':  
    sys.exit(main(sys.argv[1:]))  #sys.exit(0)正常退出, sys.exit(1)非正常退出
#输入
$ python ./test.py aa bb cc
 
#输出
aa
bb
['bb', 'cc']
b
sys.argv[0]: test1.py
sys.argv[1]: aa
sys.argv[1]['aa', 'bb', 'cc']
sys.argv: ['test1.py', 'aa', 'bb', 'cc']
type(sys.argv): <class 'list'>
len(sys.argv): 4

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

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
 
#输出
--numa=1
--numb=2
['--numb=2']
-numb=2
sys.argv[0]: test1.py
sys.argv[1]--numa=1
sys.argv[1]['--numa=1', '--numb=2']
sys.argv: ['test1.py', '--numa=1', '--numb=2']
type(sys.argv): <class 'list'>
len(sys.argv): 3
 
#输入
$ python test.py --numa 1 --numb 2
 
#输出
--numa
1
['1', '--numb', '2']
 
sys.argv[0]: test1.py
sys.argv[1]--numa
sys.argv[1]['--numa', '1', '--numb', '2']
sys.argv: ['test1.py', '--numa', '1', '--numb', '2']
type(sys.argv): <class 'list'>
len(sys.argv): 5
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值