python sys.argv可以';无法获取参数值?

python sys.argv可以';无法获取参数值?,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,我试图将一些变量传递给我的python代码。在我运行python脚本之后,变量是一个列表。这只是简单地打印出sys.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 (

我试图将一些变量传递给我的python代码。在我运行python脚本之后,变量是一个列表。这只是简单地打印出sys.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
老兄


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

请记住,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]不存在。

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


但是我读的是0和1。sys.argv[0]是脚本名称本身,我的问题是为什么长度是1。如果你看我的输出,它应该是2,对吧。你能告诉我你是如何从命令行调用的吗。这不是很清楚。我有一个名为applescript的python,它在一个主函数中,然后我只运行python脚本。~xxx$/var/folders/kg/qxxxxx433gq/T/Cleanup\at\Startup/pdTry-375321896.860.py.command;exit;var1,var2,var1,var2我无法理解上面的代码,或者您如何调用python脚本,所以如果您能告诉我就更好了。我指的是您将参数传递给python脚本的地方。您能发布这部分代码吗?:~xxx$/var/folders/kg/qxxxxx43433gq/T/Cleanup\At\Startup/pdTry-375321896.860.py不是命令,它是python脚本的输出。我从python内部调用的applescript中传递了参数。您没有添加参数,这就是为什么len是1,但另一方面,没有人可能理解您发布的内容。整理它并删除不相关的部分。参数是从我打电话给苹果公司。。。。
List Length   : 1 2 3 4
Element number: 0 1 2 3
Data          : A B C D  
# 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