在Python中使用命令行参数:理解sys.argv
我现在正在学习《Learn Python The Hard Way》这本书。我觉得这个例子可能有点过时,所以想在这里征求一下大家的意见。
我使用的是Python 3.1版本。
from sys import argv
script, first, second, third = argv
print("the script is called:", (script))
print("your first variable is:", (first))
print("your second variable is:", (second))
print("your third variable is:", (third))
我遇到了这个错误:
Traceback (most recent call last):
File "/path/ch13.py", line 3, in <module>
script, first, second, third, bacon = argv
ValueError: need more than 1 value to unpack
你们知道哪里出问题了吗?
11 个回答
4
为了传递参数,你需要以这种方式运行脚本:
python fileName.py argument1 argument2
根据你有多少个变量等于 argv
,你需要的参数数量就是总数减去第一个参数(脚本名)。比如说,
script, first, second, third = argv
应该有3个参数。
4
sys.arg
是一个包含命令行参数的列表。要让这个列表有内容,你需要在运行脚本时实际传入一些命令行参数。你可以在你的开发环境(IDE)的项目设置中进行配置,或者在命令行中像这样运行:
python script.py first second third
需要注意的是,第一个参数总是脚本的名称(在这个例子中是 python script.py
)。由于你使用了参数解包,如果你传入的参数少于或多于3个,就会出现 ValueError
错误。在解包之前,你可以用 len(argv)-1
来检查参数的数量,如果不是3个,就可以给出一个合适的错误提示。
另外,如果你需要更复杂的参数传递,可以看看 getopt
。