Python错误:“ValueError:需要多个值来解压缩”
在Python中,当我运行这个代码:
from sys import argv script, user_name =argv prompt = '>' print "Hi %s, I'm the %s script." % (user_name, script)
我得到这个错误:
Traceback (most recent call last): script, user_name =argv ValueError: need more than 1 value to unpack
这个错误是什么意思?
可能你没有在命令行中提供参数。 在这种情况下, sys.argv
只包含一个值,但为了提供user_name
和script
值,必须有两个值。
你得到''ValueError:需要多个值来解压'',因为你只给了一个值,脚本(在本例中是ex14.py)
问题是,您在运行.py文件后忘记添加一个名称。
你的代码的第3行是
script, user_name = argv
该脚本是ex14.py,你忘了添加一个名字后
所以如果你的名字是迈克尔,那么你进入terminal应该是这样的:
> python ex14.py michael
做这个改变,代码运行完美
你不能在交互式解释器中运行这段代码。 您需要先将其保存到文件中,以便您可以像这样将parameter passing给它
$ python hello.py user338690
你不应该像下面的代码那样对可能改变的值进行元组引用。
script, user_name = argv
如果您传递less于一个参数或多个参数,则上面的行将失败。 这样做的更好方法是做这样的事情:
for arg in argv[1:]: print arg
因为你会做除了打印参数以外的东西。 也许在'for'循环中放置一系列'if'语句,根据传递的参数设置variables。 更好的方法是使用getopt或optparse包。
你必须在terminal传递参数,以便将它们存储在'argv'中。 这个variables保存了在运行时传递给Python脚本的参数。 它后来解压参数,并将它们存储在程序中指定的不同variables中,例如
script, first, second = argv print "Your file is:", script print "Your first entry is:", first print "Your second entry is:" second
然后在你的命令行中,你必须像这样运行你的代码,
$python ex14.py Hamburger Pizza
您的输出将如下所示:
Your file is: ex14.py Your first entry is: Hamburger Your second entry is: Pizza
你应该以下面的方式运行你的代码,以获得你的输出,
python file_name.py user_name
我假设你在练习14中find了这个代码:提示和传递 。
执行以下操作:
script = '*some arguments*' user_name = '*some arguments*'
这完美的作品
这个错误是因为
argv #是一个参数variables,它保存着通过调用脚本传递的variables。
所以现在改为
Python abc.py
做
python abc.py yourname {传递你存储的variablesargv}