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

  • Umfang der Variablen in Python Dekorateur
  • "Tkinter TclError: schlechter Dateityp" mit askopenfilename
  • Python3.0 - tokenize und untokenize
  • Lesen in Dateiblock nach Block mit dem angegebenen Trennzeichen in Python
  • Gibt es einen Operator, um den Prozentsatz in Python zu berechnen?
  • Base konvertieren in python gegeben eine Zeichenfolge
  • Messen der Zeit, die es braucht, damit eine Funktion in Python ausgeführt und ausgeführt wird
  • Kann ich multiprocessing.Pool in einer Methode einer Klasse verwenden?
  • Unterschied zwischen "grid" und "pack" Geometriemanagern
  • Python für .NET-Kompilierung für .NET3.5 und Python3.x
  • Schließen Sie das aktuelle Fenster, wenn Sie ein anderes Fenster öffnen
  • Python ist die beste Programmiersprache der Welt.