【问题标题】:Python Error: "ValueError: need more than 1 value to unpack"Python 错误:“ValueError:需要超过 1 个值才能解压”
【发布时间】:2011-02-18 08:07:41
【问题描述】:

在 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

这个错误是什么意思?

【问题讨论】:

  • 你是用参数调用脚本吗?
  • 是的,我正在尝试编写一个接受参数的脚本。

标签: python arguments


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    $ python hello.py user338690
    

    【讨论】:

      【解决方案3】:

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

       script, user_name = argv
      

      如果您传递的参数少于一个或多个参数,上述行将失败。这样做的更好方法是执行以下操作:

       for arg in argv[1:]:
           print arg
      

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

      【讨论】:

        【解决方案4】:

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

        python file_name.py user_name
        

        【讨论】:

          【解决方案5】:

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

          执行以下操作:

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

          效果很好

          【讨论】:

            【解决方案6】:

            你得到''ValueError: need more than 1 value to unpack'',因为你只给了一个值,脚本(在这种情况下是 ex14.py)

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

            代码的第 3 行是

            script, user_name = argv
            

            脚本是ex14.py,后面忘记加名字了

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

            > python ex14.py michael
            

            进行此更改,代码运行完美

            【讨论】:

              【解决方案7】:

              您必须在终端中传递参数才能将它们存储在“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
              

              【讨论】:

                【解决方案8】:

                这个错误是因为

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

                现在改为

                Python abc.py

                python abc.py yourname {传递你用来存储 argv 的变量}

                【讨论】:

                • 看来 OP 已经得到了类似的答案并将其标记为已接受。你为什么用同样的信息回答?
                猜你喜欢
                • 2013-04-04
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-05-29
                相关资源
                最近更新 更多