Warum bin ich immer einen SyntaxError in den Python-interpreter?
Dieser code funktioniert, wenn ich versuche es aus .py-Datei, aber nicht in der Befehlszeilen-interpreter und Idle.
>>> try:
... fsock = open("/bla")
... except IOError:
... print "Caught"
... print "continue"
File "<stdin>", line 5
print "continue"
^
SyntaxError: invalid syntax
Ich bin mit python 2.6
Welche version von Python benutzt du?
aktualisiert die Frage. - python 2.6.
Beachten Sie, dass Sie prettymuch immer verwenden wollen-Kontext-Manager beim öffnen von Dateien (
aktualisiert die Frage. - python 2.6.
Beachten Sie, dass Sie prettymuch immer verwenden wollen-Kontext-Manager beim öffnen von Dateien (
with open(filename, mode) as f:
).InformationsquelleAutor Michael Ekoka | 2010-03-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit Python 3,
print
ist eine Funktion und keine Anweisung, so müssten Sie in Klammern die Argumente, wie inprint("continue")
, wenn Sie wurden mit Hilfe von Python 3.Dem caret-Zeichen, jedoch, verweist auf eine frühere position, als wäre es mit Python 3, so müssen Sie sich mit Python 2.x statt. In diesem Fall wird der Fehler, weil die Eingabe dieser in den interaktiven interpreter, und es braucht ein wenig "Hilfe", um herauszufinden, was Sie versuchen, Sie zu erzählen. Geben Sie eine leere Zeile nach der vorherigen Blocks, so dass es entziffern kann die Einrückung richtig, wie in diesem:
InformationsquelleAutor Peter Hansen
Müssen Sie eine leere Zeile zum schließen des
except
block. Die...
zeigt, ist es immer noch versuchen, den code in diesem block, auch wenn Sie dedent. Dies ist nur eine Marotte des interaktiven interpreter.InformationsquelleAutor Mike Graham
Versuchen, diese im interpreter:
Wichtig ist hier die Leerzeile nach dem Einzug. Ich bin mit dem python 2.6 interpreter, und es wirft die gleichen Syntax-error als Sie.
Dies ist, da der interpreter erwartet, dass einzelne Blöcke durch leere Zeilen getrennt sind. Zusätzlich wird die leere Zeile (zwei neue-Zeile-Zeichen) kennzeichnet das Ende des Blocks und die, die der interpreter ausführen soll.
def f1(): return 1 #a line here def f2(): return 2
InformationsquelleAutor Philip Daubmeier