web-dev-qa-db-ja.com

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

そのエラーはどういう意味ですか?

46

おそらく、コマンドラインで引数を指定しなかったのでしょう。その場合、sys.argvには1つの値のみが含まれますが、user_namescriptの両方に値を提供するには、2つの値が必要です。

39
David Z

'' ValueError:アンパックするために複数の値が必要です ''を取得しているのは、スクリプト(この場合はex14.py)の値を1つだけ指定したためです

問題は、.pyファイルを実行した後に名前を追加するのを忘れたことです。

コードの3行目は

script, user_name = argv

スクリプトはex14.pyで、名前を追加するのを忘れた

あなたの名前がマイケルの場合、ターミナルに入力する内容は次のようになります。

> python ex14.py michael

この変更を加えると、コードは完全に実行されます

8
Aesthete

インタラクティブインタープリターでこの特定のコードを実行することはできません。このように引数を渡すことができるように、最初にファイルに保存する必要があります

$ python hello.py user338690
4
John La Rooy

以下の行のように変化する可能性のある値でタプルの逆参照を行うべきではありません。

 script, user_name = argv

1つ未満の引数または複数の引数を渡すと、上記の行は失敗します。これを行うより良い方法は、次のようなことです。

 for arg in argv[1:]:
     print arg

原因は、引数を出力する以外のことです。たぶん、渡された引数に応じて変数を設定する「for」ループに一連の「if」ステートメントを入れます。さらに良い方法は、getoptまたはoptparseパッケージを使用することです。

3
cnobile

引数を '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
3

出力を取得するには、次の方法でコードを実行する必要があります。

python file_name.py user_name
1
Abhay

このコードは Exercise 14:Prompting And Passing で見つかったと思います。

以下をせよ:

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

そしてそれは完全に動作します

1
user1582256

このエラーは

argv#これは、スクリプトの呼び出しで渡す変数を保持している引数変数です。

だから今代わりに

Python abc.py

行う

python abc.py yourname {argvを保存するために作成した変数を渡します}

0
Nikhil Karki