在Python中使用命令行参数:理解sys.argv

6 投票
11 回答
25300 浏览
提问于 2025-04-16 10:25

我现在正在学习《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

9

你忘记给脚本传递参数了,比如说 foo.py bar baz quux

在这里输入图片描述

撰写回答