在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
该错误意味着什么?
答案 0 :(得分:38)
可能你没有在命令行上提供参数。在这种情况下,sys.argv
只包含一个值,但必须有两个值才能为user_name
和script
提供值。
答案 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}