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_namescript值,必须有两个值。

你得到''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}