Eingabe in Shell, aber nicht Terminal

Ich habe:

filename = input() with open(filename) as file: print('It opened.') 

Auf meinem Desktop als "test.py" gespeichert.

Ich laufe es vom Terminal und bekomme:

 blahblahblah:~ rickyd$ python /users/rickyd/desktop/test.py /users/rickyd/desktop/tryme.txt Traceback (most recent call last): File "/users/rickyd/desktop/test.py", line 1, in <module> filename = input() File "<string>", line 1 /users/rickyd/desktop/tryme.txt ^ SyntaxError: invalid syntax 

Wenn ich es in der Schale laufe, funktioniert es perfekt:

 >>> ================================ RESTART ================================ >>> /users/rickyd/desktop/tryme.txt It opened. >>> 

Warum funktioniert es nicht im Terminal?

Gibt es eine Möglichkeit, um sicherzustellen, dass (zumindest für Code nicht explizit entworfen, um anders zu tun) die Shell und das Terminal geben das gleiche Verhalten, so dass ich nicht haben, um beide separat zu überprüfen?

3 Solutions collect form web for “Eingabe in Shell, aber nicht Terminal”

Wenn du es im Terminal betreibst, läuftst du es mit Python 2. Das ist, warum es nicht funktioniert.

Welches Betriebssystem bist du, und wie laufst du es?

Du musst so laufen

 python3 /users/rickyd/desktop/test.py 

es sollte funktionieren

Sie können die Version Ihrer Befehlszeile Python entweder durch Eingabe:

 C:\work>python -V Python 2.7.1 

(Das ist ein Großbuchstabe V) oder einfach durch Eingabe von Python ohne Optionen und Blick auf die Versionsnummer, die am Anfang der interaktiven Aufforderung Nachrichten angezeigt wird. Dies scheint ein 2.x vs. 3.x Problem mit der Tatsache, dass input () in 3.x entspricht raw_input () in 2.x (in 2.x, die Eingabe () -Funktion liest und auswertet Die Eingabe als Python-Code, weshalb man den Fehler "ungültige Syntax" bekommt).

  • Wie benutzt man eine benutzerdefinierte Vergleichsfunktion in Python 3?
  • Python3: bind-Methode zur Klasseninstanz mit .__ get __ (), es funktioniert aber warum?
  • Aufteilen einer csv-Datei in Panda-Dataframe durch mehrere Spalten
  • Python range () und zip () Objekttyp
  • Python 3.3 auf Cygwin installieren
  • Wie man NaN-Werte in numerischem Array füllt, um SVD anzuwenden?
  • Fuzzy-Datei diff
  • Syntaxfehler beim Folgen von Pygame / Python Tutorial auf YouTube
  • Wie schreibe ich Ausnahme-Reraising-Code, der mit Python 2 und Python 3 kompatibel ist?
  • Wie man Bytes zu einer Datei in Python 3 schreibt, ohne die Codierung zu kennen?
  • Python NameError: name ist nicht definiert
  • Python ist die beste Programmiersprache der Welt.