Python错误:“ValueError:需要多于1个值才能解压缩”

时间:2010-05-11 20:16:39

标签: python arguments

在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

该错误意味着什么?

8 个答案:

答案 0 :(得分:38)

可能你没有在命令行上提供参数。在这种情况下,sys.argv只包含一个值,但必须有两个值才能为user_namescript提供值。

答案 1 :(得分:8)

你得到''ValueError:需要超过1个值来解包'',因为你只给了一个值,脚本(在这种情况下是ex14.py)

问题是,您在运行.py文件后忘记添加名称。

代码的第3行是

script, user_name = argv

脚本是ex14.py,你忘了在

之后添加一个名字

所以,如果你的名字是迈克尔,那么你输入终端的内容应该类似于:

> python ex14.py michael

进行此更改并且代码运行完美

答案 2 :(得分:4)

您无法在交互式解释器中运行此特定代码段。 您需要先将其保存到文件中,以便可以像这样将

传递给它
$ python hello.py user338690

答案 3 :(得分:3)

你不应该对可能像下面一行那样改变的值进行元组解除引用。

 script, user_name = argv

如果您传递少于一个参数或多个参数,则上述行将失败。更好的方法是做这样的事情:

 for arg in argv[1:]:
     print arg

因为除了打印args之外你还会做其他事情。也许在'for'循环中放置一系列'if'语句,根据传递的参数设置变量。更好的方法是使用getopt或optparse包。

答案 4 :(得分:3)

您必须在终端中传递参数才能将它们存储在'argv'中。此变量保存您在运行时传递给Python脚本的参数。它稍后解压缩参数并将它们存储在您在程序中指定的不同变量中,例如

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

答案 5 :(得分:1)

您应该按照以下方式运行代码,以获得输出

python file_name.py user_name

答案 6 :(得分:1)

我假设您在Exercise 14: Prompting And Passing上找到了此代码。

执行以下操作:

script = '*some arguments*' 
user_name = '*some arguments*'

并且完美无缺

答案 7 :(得分:0)

此错误是因为

argv #这是一个参数变量,它保存您通过调用脚本传递的变量。

所以现在改为

Python abc.py

DO

python abc.py yourname {传递您存储的变量argv}

相关问题