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

6

我目前正在学习《笨办法学 Python》。我认为这个例子可能已经过时了,所以我想在这里获得反馈。

我正在使用 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个回答

9
你忘记给脚本传递参数了,例如foo.py bar baz quuxenter image description here

我是新手,用我已经写好的代码,正确的处理方式是什么? - Zack Shapiro
他说在这个练习中你必须运行命令行。打开CMD(窗口)并输入:ex13.py脚本值第一个值第二个值第三个值。 - Vo Quoc Cuong

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

1

你可以做到

(script, first, second, third) = argv 

并传递3个参数

python filename arg1 arg2 arg3

当你从命令行运行它时。

我正在使用Python 3.6.0。之前我没有用括号包裹argv参数。但现在它可以工作了。

you can check it here


0

这是另一种写法:

*script_args = sys.argv

0

你正在尝试将argv解包成单独的值。解包需要确保解包的值的数量与其大小匹配。请考虑以下内容:

a, b, c = [1, 2, 3]

运行良好,但是这个:

a, b, c, d, e = [1]

会给你同样丑陋的错误,就像你刚刚产生的那样。以你所做的方式解包sys.argv是特别糟糕的,因为它是用户输入,而你不知道脚本的用户会提供多少参数。因此,你应该更加小心地解包它:

if len(argv) == 5:
    script_name, a, b, c, d = argv
else:
    print "This script needs exactly four arguments, aborting"
    exit()

0
为了在命令行上运行此脚本,您需要使用三个参数。您将需要输入类似以下的内容:
python /path/ch13.py first second third

0
from sys import argv
a, b, c, d = argv
print "The script is called:", a
print "Your first variable is:", b
print "Your second variable is:", c
print "Your third variable is:", d

将此脚本保存为:s.py
从终端运行此脚本的方法如下: 输入图像描述

0

按照以下方式执行代码:

python ch13.py first second third

0

你所需要做的就是在打开脚本时键入任意三个内容。例如,运行 python (然后是你的文件名.py)1 2 3。"1、2和3"可以替换为任何三个数字或单词。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接