Python:传递命令行参数
获取命令行参数用sys.argv
,参数类型都是str
:
t.py内容:
#!/usr/bin/env python3
#coding=utf-8
import sys
if __name__ == "__main__":
print(len(sys.argv))
print(sys.argv[1])
[root@xjb ~]# python3 t.py abc
2
abc
[root@xjb ~]# ./t.py 123
2
123
注意:
如果命令行参数里有特殊字符,如(
、)
等,会报错,这是可以用""
或''
将参数引起来,python程序获取到的参数会是""
包裹里的内容(不包括""
),若参数里有"
,可以用\"
转义。
如程序t.py如下:
#!/usr/bin/env python
#coding=utf-8
import sys
if __name__ == "__main__":
print(len(sys.argv))
for arg in sys.argv:
print(arg)
运行程序:
[root@xjb tmp]# ./t.py abc ab( ab)
-bash: syntax error near unexpected token `('
[root@xjb tmp]# ./t.py abc ab\( ab\)
4
./t.py
abc
ab(
ab)
[root@xjb tmp]# ./t.py abc "ab(" "ab)"
4
./t.py
abc
ab(
ab)
[root@xjb tmp]# ./t.py 'ab"sdc' "ab'"
3
./t.py
ab"sdc
ab'
[root@xjb tmp]# ./t.py 'ab"sdc' 'ad('
3
./t.py
ab"sdc
ad(