6

私は現在、Learn Python TheHardWayを行っています。この例は古くなっている可能性があるので、ここでフィードバックを受け取りたいと思いました。

Python3.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))

このエラーが発生します:

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

何が問題なのか分かりますか?

4

11 に答える 11

9

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

ここに画像の説明を入力してください

于 2011-01-21T23:55:53.727 に答える
4

引数を渡すには、次の方法でスクリプトを実行する必要があります。

python fileName.py argument1 argument2

= toの変数の数に応じてargv、これは必要な変数の数から最初の引数(スクリプト)を引いたものになります。例えば、

 script, first, second, third = argv

3つの引数が必要です。

于 2011-11-30T05:01:20.607 に答える
3

sys.argコマンドラインパラメータのリストです。このリストにデータを入力するには、実際にコマンドラインパラメータをスクリプトに渡す必要があります。これは、IDEのプロジェクト設定で行うか、コマンドラインで次のように実行します。

python script.py first second third

最初の引数は常にスクリプトの名前(python script.pyこの場合)であることに注意してください。解凍の使用法により、ValueError3つより少ないまたはより多いパラメーターを渡すたびにを取得します。を使用して開梱する前に番号を確認し、len(argv)-13でない場合は適切なエラーを表示できます。

関連する注記で、getoptより複雑な引数の受け渡しを行う必要があるかどうかを確認してください。

于 2011-01-21T23:59:11.043 に答える
0

argvを別々の値に解凍しようとしています。解凍するには、値の正確な量が解凍する値のサイズと一致している必要があります。このことを考慮:

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

正常に動作しますが、これは次のとおりです。

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

作成したのと同じ醜いエラーが発生します。sys.argvをユーザー入力であり、スクリプトのユーザーが提供する引数の数がわからないため、自分が行った方法でsys.argvを解凍するのは特に悪いことです。したがって、より慎重に開梱する必要があります。

if len(argv) == 5:
    script_name, a, b, c, d = argv
else:
    print "This script needs exactly four arguments, aborting"
    exit()
于 2012-10-02T08:01:45.633 に答える
0

スクリプトを開くときに、3つ入力するだけです。たとえば、python(次にfilename.py)を実行します。123。「1、2、および3」は、任意の3つの数字または単語に置き換えることができます。

于 2014-04-09T00:24:21.997 に答える
0

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

python /path/ch13.py first second third
于 2014-09-05T01:23:26.203 に答える
0

次のようなコードを実行します。

python ch13.py first second third
于 2016-07-04T15:11:19.803 に答える
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

次のようにターミナルからこのスクリプトを実行します。 ここに画像の説明を入力してください

于 2016-07-29T10:04:03.153 に答える
0

できるよ

(script, first, second, third) = argv 

そして3つの引数を渡します

python filename arg1 arg2 arg3

コマンドラインから実行する場合。

Python3.6.0を使用しています。以前は、argv引数を中かっこで囲んでいませんでした。しかし、今では機能します。

こちらで確認できます

于 2017-05-31T14:40:10.997 に答える
0

この例が役立つと思います。必要な数の引数を渡すことができます。つまり、パラメーターの数は可変です。:D

def main(*args):
    print("Arguments Passed: ", args)

if __name__ == '__main__':
    name_Script, *script_args = sys.argv
    print("Name of the script: ", name_Script)
    main(*script_args) #Send list of arguments
于 2018-07-07T02:20:11.427 に答える
0

これを書く別の方法は次のとおりです。

*script_args = sys.argv
于 2021-08-08T00:10:28.500 に答える