2017-09-10 3 views
-1

Ich las lesen lernen Python der harte Weg von Zed A. Shaw. In Kapitel 13 habe ich den folgenden CodePython-Code läuft nicht

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) 

Ich habe versucht, dies auf spyder laufen, aber der Fehler occurs.I würde die letzten Zeilen von spyder Konsole einfügen mir ValueError: not enough values to unpack (expected 4, got 1)

Bitte helfen, das Problem herauszufinden , Vielen Dank.

+1

1. Wenn Sie Fehler erhalten, müssen Sie sie hier veröffentlichen. Wenn du sagst, dass du Fehler bekommst, dann ist es nicht sehr hilfreich, zu sagen, was sie sind. 2. Wie führen Sie das Skript aus? Übergeben Sie irgendwelche Argumente? – Carcigenicate

+0

Bitte werfen Sie einen Blick auf diese [argv] (https://stackoverflow.com/questions/13263951/what-is-argv-and-what-does-it-do) – ABcDexter

Antwort

0

Der Fehler, den Sie erhalten, liegt daran, dass Sie beim Ausführen der Datei keine Argumente übergeben. Versuchen, Argumente beim Ausführen der Datei zu übergeben. Ein Beispiel

python foo.py 1, 2, 3 
4

Sie übergeben keine Befehlszeilenargumente beim Ausführen des Skripts, obwohl 3 Argumente erwartet werden. Sie erhalten einen Fehler, weil Sie versuchen, mehr Werte aus args zu extrahieren, als es enthält.

Befehlszeilenargumente sind Daten, die Sie dem Programm geben. Übergeben Sie einfach einige Dummy-Daten als Argumente, wenn Sie Ihr Skript ausführen:

python your_script_here.py 1 2 3 

Die 1 2 3 die Argumente übergeben werden.

Mein Beispiel wurde von this tutorial geändert. Es lohnt sich, es zu lesen.

1
# your_code.py 
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) 

Sie können es so laufen:

python your_code.py one two three 

So erhalten Sie:

The script is called: your_code.py 
Your first variable is: one 
Your second variable is: two 
Your third variable is : three 

Grüße

+1

Was ist der Unterschied zwischen Ihrem Code und OP's? –

+0

Es gab führende Briefe vor dem Import, es wurde korrigiert, nehme ich an! – gretiere

0

In Python, sys.argv ist eine Liste, die die command-line Argumente enthält bestanden zum Skript.

So könnten Sie zum Beispiel eine Python-Datei mit dem Namen testingArguments.py erstellen, die die analysierten Argumente aus command-line drucken würde.

Der Code für diese einfach etwas aussehen kann:

from sys import argv 
print(argv) 

dann von der Befehlszeile, wenn Sie den Befehl lautete:

python testingArguments.py arg1 arg2 3 

dann wäre es aus den Argumenten in eine list drucken so:

['testingArguments.py', 'arg1', 'arg2', '3'] 

, was Ihr Code tut, dann ist dies bekommen list in die gleiche Art und Weise, entpackt es dann genau wie möglich ein list nicht von sys.argv:

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

jetzt a=1, b=2, c=3 und d=4.

so hoffentlich können Sie jetzt sehen, dass insgesamt, Ihr Code nur die vier Argumente an der Befehlszeile übergeben, die den Skriptnamen und 3 weitere Argumente wie oben sind.

Die error, die Sie bekommen:

ValueError: not enough values to unpack (expected 4, got 1) 

ist, weil Sie nicht in diesen 3 zusätzliche Variable vorbei sind so sys.argv nicht in 4 entpackt werden kann, da es nur ein Element hat: den Namen des Skripts. Daher das letzte Bit: (expected 4, got 1).

Hoffe, das hilft!