Ich benutze die Funktion input
von fileinput
, um Skript über pipes
oder input file
zu akzeptieren. Hier ist das minimale Skript:
finput.py
%Vor% Nachdem ich dieses Skript ausführbar gemacht habe, starte ich ls | ./finput.py
und bekomme unexpected error message
Die einzige Lösung, die ich gefunden habe, ist, wenn ich vor der Import-Anweisung #!/usr/bin/env/python3
hinzufüge.
Aber dieses Problem scheint nur mit dem Modul fileinput
zusammen zu hängen. Da das folgende Skript ohne shebang
funktioniert hat:
fruit.py
%Vor% Nun, was fehlt mir? Warum kann der Befehl import
nicht gefunden werden, da shebang
nicht erforderlich ist in finput.py
?
Sie müssen Ihrem Betriebssystem mitteilen, dass es sich um ein Python-Programm handelt, andernfalls wird es als Shell-Skript interpretiert (wobei der Befehl import
nicht gefunden werden kann).
Wie Sie es erkannt haben, verwenden Sie eine Shebang-Linie:
%Vor% Dies wird nur benötigt, wenn Sie Ihr Skript wie folgt ausführen wollen: ./script.py
, was Ihrem Betriebssystem sagt, dass "diese ausführbare Datei ausgeführt werden soll". Dies erfordert, dass Ihr Betriebssystem identifiziert, wie es das Programm ausführen soll, und es stützt sich (unter anderem) auf die Shebang-Linie.
Wenn Sie jedoch python script.py
ausführen (was ich vermutlich für fruit.py
getan habe), fragt Python Ihr Betriebssystem nicht, ob es sich um ein Python-Programm handelt oder nicht, daher spielt die Shebang-Zeile keine Rolle / p>