Ich arbeite an einer Anwendung, die direkt oder über Stdin gestartet werden kann.Unterstützt sys.stdin.readlines() sowie Befehlszeilenargumente in Python?
Momentan, wenn ich keine Daten an die Anwendung leiten wird eine EOF nie empfangen und es wartet auf Eingabe (wie Strg + d). Dieser Code wie folgt aussieht:
while True:
line = sys.stdin.readline()
print("DEBUG: %s" % line)
if not line:
break
Ich habe auch versucht:
for line in sys.stdin:
print("DEBUG (stdin): %s" % line)
return
jedoch in beiden Fällen ein EOF nicht empfangen wird, wenn das Programm direkt gestartet wird, so hängt sie darauf gewartet.
Ich habe gesehen, dass einige Unix-Anwendungen eine einzige Befehlszeilen-Flag in Fällen, in denen stdin Eingabe erwartet wird, aber ich frage mich, ob es eine bessere Problemumgehung gibt dann das? Ich würde eher den Benutzer in der Lage sein, die Anwendung austauschbar zu verwenden, ohne sich daran zu erinnern, ein -
Flag hinzuzufügen.
was bedeutet 'über stdin' bedeuten? Bedeutet das, dass Sie es als Modul starten? – Sraw
@StrawStdin sind die Daten, die von der Pipe in die Anwendung kommen, z. '' echo "a" | script.py''' setzt 'a' als Element von sys.stdin – Codingo
Was ist Ihr System? Ich habe die STRG + D funktioniert, wenn Sie das Skript direkt ohne irgendeine Pipe in einem Linux aufrufen. –