Ich versuche, einige der Code-Golf-Herausforderungen zu lösen, aber sie erfordern alle, dass die Eingabe von "stdin" stammt. Wie bekomme ich das in Python?
Sie können das Modul fileinput
verwenden:
import fileinput
for line in fileinput.input():
pass
fileinput
durchläuft alle Zeilen der Eingabe, die als Dateinamen in den Befehlszeilenargumenten angegeben sind, oder die Standardeingabe, wenn keine Argumente angegeben werden.
Hinweis: line
enthält einen nachgestellten Zeilenumbruch; um diesen zu entfernen, verwenden Sie line.rstrip()
.
Dafür gibt es mehrere Möglichkeiten.
sys.stdin
ist ein dateiähnliches Objekt, auf dem Sie die Funktionen read
oder readlines
aufrufen können, wenn Sie alles lesen wollen oder wenn Sie alles lesen und automatisch durch Zeilenumbrüche trennen wollen. (Sie müssen import sys
haben, damit das funktioniert.)
Wenn Sie den Benutzer zur Eingabe auffordern wollen, können Sie raw_input
in Python 2.X verwenden, und nur input
in Python 3.
Wenn Sie eigentlich nur Kommandozeilenoptionen lesen wollen, können Sie auf diese über die Liste sys.argv zugreifen.
Sie werden wahrscheinlich auch diesen Wikibook-Artikel über I/O in Python als nützliche Referenz finden.
Hier ist aus Learning Python:
import sys
data = sys.stdin.readlines()
print "Counted", len(data), "lines."
Unter Unix können Sie es testen, indem Sie etwas wie folgt tun:
% cat countlines.py | python countlines.py
Counted 3 lines.
Unter Windows oder DOS würden Sie Folgendes tun:
C:\> type countlines.py | python countlines.py
Counted 3 lines.