Python:传递命令行参数

时间:2022-11-07 22:24:45

获取命令行参数用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(