2011-01-21 33 views
5

私は現在、Learn Python The Hard Wayを行っています。私は、この例は日付がないかもしれないと思うので、ここでフィードバックを得たいと思っています。何が間違ってPythonでのコマンドライン引数の使用:sys.argvの理解

Traceback (most recent call last): 
    File "/path/ch13.py", line 3, in <module> 
    script, first, second, third, bacon = argv 
ValueError: need more than 1 value to unpack 

任意のアイデア:私は、Python 3.1

from sys import argv 

script, first, second, third = argv 

print("the script is called:", (script)) 
print("your first variable is:", (first)) 
print("your second variable is:", (second)) 
print("your third variable is:", (third)) 

を使用してい

が、私はこのエラーを取得していますか?

答えて

8

スクリプトに引数を渡すのを忘れました。 foo.py bar baz quux

enter image description here

+0

私はnoobのだけど、私が書いたコードでそれを行うための正しい方法は何ですか? –

+0

'foo.py bar baz quux' –

+0

彼は、この練習ではコマンドラインを実行する必要があると言いました。 CMD(ウィンドウ)を開き、次のように入力します。ex13.py script_value first_value second_value third_value –

3

sys.argコマンドラインパラメータのリストです。このリストに値を設定するには、実際にコマンドラインパラメータをスクリプトに渡す必要があります。あなたのIDEのプロジェクト設定で、またはコマンドラインで次のように実行することで、このいずれかの操作を行います。最初の引数は、常にスクリプトの名前(この場合はpython script.py)であることを

python script.py first second third 

注意。開梱の使い方により、3つ以上のパラメータを渡すたびにValueErrorが得られます。開封する前に番号を確認してください。len(argv)-1で、適切でない場合は3を入力してください。

もっと複雑な引数を渡す必要がある場合は、getoptを参照してください。

4

引数を渡すためには、あなたがこのようにスクリプトを実行する必要があります。

python fileName.py argument1 argument2 

あなたはargvに=を持っているどのように多くの変数に応じて、これはあなたが持っている必要がありますどのように多くのマイナス最初の引数(スクリプト)。たとえば、

script, first, second, third = argv 

には3つの引数が必要です。

0

argvを個別の値に解凍しようとしています。アンパックするには、値の正確な量がアンパックする値のサイズと一致する必要があります。

a, b, c = [1, 2, 3] 

が正常に動作しますが、この:

a, b, c, d, e = [1] 

はあなただけ生産することを、あなたに同じ醜いエラーになります。このことを考えてみましょうあなたがやったようにsys.argvを解凍するのは、ユーザの入力であり、スクリプトのユーザが提供する引数の数がわからないため、特に悪いことです。したがって、より慎重に解凍する必要があります。

if len(argv) == 5: 
    script_name, a, b, c, d = argv 
else: 
    print "This script needs exactly four arguments, aborting" 
    exit() 
0

スクリプトを開くときに入力する必要があります。たとえば、pythonを実行します(あなたのfilename.py)。1 2 3. "1,2,3"は3つの数字または単語に置き換えることができます。

0

このスクリプトをコマンドラインで実行するには、3つの引数を使用する必要があります。

python /path/ch13.py first second third 
0

は、このようなコードを実行します:

python ch13.py first second third 
0
from sys import argv 
a, b, c, d = argv 
print "The script is called:", a 
print "Your first variable is:", b 
print "Your second variable is:", c 
print "Your third variable is:", d 

保存し、このスクリプトのように:s.py

を実行し、このスクリプト 次のようなものを入力する必要があります端末からは次のようになります。 enter image description here

0

あなたは

(script, first, second, third) = argv 

を行うと、あなたは、コマンドラインから実行するとき3つの引数

python filename arg1 arg2 arg3 

を渡すことができます。

私はPython 3.6.0を使用しています。前に、私はargv引数を中括弧で囲んでいませんでした。しかし、今それは動作します。

you can check it here

+1

ありがとう@paul ..私はフォーマットを知らなかった。 – beat7Bx

関連する問題