python系统argv无法获取参数值?

2024-10-01 13:26:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将一些变量传递给python代码。变量是一个列表,在我运行python脚本之后。只是打印出来而已系统argv. 输出如下:

:~ xxx$ /var/folders/kg/qxxxxxd343433gq/T/Cleanup\ At\ Startup/pdTry-375321896.860.py.command ; exit;
var1, var2, var1, var2
the len argv is 1
/Users/xxx/python/pdTry.py
Traceback (most recent call last):
File "/Users/xxx/python/pdTry.py", line 58, in <module>
main()
File "/Users/xxx/python/pdTry.py", line 33, in main
print (sys.argv[1])
IndexError: list index out of range
logout

您可以看到包含var1和var2的列表实际上打印了2次。但我能得到价值,透镜系统argv是1。没有价值系统argv[1] 一。有人知道为什么吗?为什么长度是1,应该是2?arg[0]是脚本名,arg[1]是我传递给它的变量列表?在

代码很简单

^{pr2}$

Tags: 代码inpy脚本列表main系统line
3条回答

请记住,python中的列表从0开始。在

List Length   : 1 2 3 4
Element number: 0 1 2 3
Data          : A B C D  

所以当长度为1时,只有1个元素(argv[0]),这意味着argv[1]不存在。在

似乎您遗漏了脚本的任何实际参数,这些参数可以添加到系统argv列表。在您发布的调用中,我没有看到传递到脚本的变量列表。如果分隔命令的分号(脚本名和退出shell内置)被转义,那么很可能是len(系统argv)等于3(但我怀疑您的初衷是将分号和exit作为系统argv价值观)。在

# simple test script
$ cat exittest.py
import sys
print(sys.argv, len(sys.argv))

# and some calls
$ python3.2 exittest.py
['exittest.py'] 1

$ python3.2 exittest.py \; exit
['exittest.py', ';', 'exit'] 3

# and for a similar call as you posted I ssh'ed to my localhost
# to test it with exit builtin
$ python3.2 exittest.py ; exit
['exittest.py'] 1

伙计

当长度为1时,您正在读取argv[[1]。长度数组怎么可能有两个项目(读取第0项和第1项)。在

相关问题 更多 >