-1

「Learn Python the Hard Way」を使用し、コードの作成と実行に PyScripter を使用しています。

演習 13 では、次のコードを実行する必要があります。

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

実行すると、次のエラーが表示されます

ValueError: need more than 1 value to unpack

同じトピックに関する他の質問を読みましたが、うまくいく答えが見つからないようです。

私はコーディングにもかなり慣れていないので、その方法を説明するのは素晴らしいことです!

4

1 に答える 1

0

スクリプトは、正確に3 つのコマンドライン引数を渡した場合にのみ機能します。例えば:

script.py 1 2 3

これ以外の数のコマンドライン引数を使用することはできません。そうしないと、aValueErrorが発生します。

firstおそらく、受け取った引数の数を確認し、名前、second、および を適切に割り当てることによって、スクリプトをもう少し堅牢にする必要がありthirdます。

以下はデモンストレーションです。

from sys import argv, exit

argc = len(argv)  # Get the number of commandline arguments

if argc == 4:
    # There were 3 commandline arguments
    script, first, second, third = argv
elif argc == 3:
    # There were only 2 commandline arguments
    script, first, second = argv
    third = '3rd'
elif argc == 2:
    # There was only 1 commandline argument
    script, first = argv
    second = '2nd'
    third = '3rd'
elif argc == 1:
    # There was no commandline arguments
    script = argv[0]
    first = '1st'
    second = '2nd'
    third = '3rd'
else:
    print "Too many commandline arguments"
    exit(1)

print "The script is called:", script
print "Your first variable is:", first
print "Your second variable is:", second
print "Your third variable is:", third

もちろん、これはほんの一例です。if ステートメント内で必要なことは何でも実行できます (名前を別のものに割り当てる、例外を発生させる、メッセージを出力する、スクリプトを終了するなど)。ここで重要な部分はargc = len(argv)、スクリプトが受け取った引数の数をチェックする行と if ステートメントです。

于 2014-12-07T20:59:27.687 に答える