ich bin in diesem Augenblick durch einige Übungen in Python ausgeführt werden, einschließlich einem einfachen Zeilenzählers, der eine Eingabe von der Kommandozeile oder stdin nehmen:Stdin Arbeiten nicht wie beabsichtigt [Python]
#### line_count1.py ####
import sys
def count_lines(file):
n = 0
for line in file:
n = n + 1
return n
if len(sys.argv) == 1:
print("Needs stdin")
file = sys.stdin
else:
print("File given at command line")
file = open(sys.argv[1])
print (count_lines(file))
Wenn ich eine Eingabe Datei in der Befehlszeile, dh python line_count1.py file_with_4_lines.txt, es funktioniert großartig, und ich bekomme die Ausgabe:
File given at command line
4
Allerdings, wenn ich es geben, so dass es stdin über python line_count1 entbindet .py, bekomme ich die folgende Ausgabe:
Needs stdin
_
Aber eigentlich tut nichts mit meinem Standard-Eintrag. Ich kann file_with_4_lines.txt eingeben, aber dann dauert es nur und wartet auf mich, um eine andere stdin-Linie einzugeben, nie ausbrechend, bis ich den Code im Aufgabenmanager töten muss.
Was würde dazu führen, dass dies geschieht? Sobald ich etwas für stdin eingegeben habe, sollte der Rest des Codes durchgehen. Aber es ist nicht. Was vermisse ich?
Erwarten Sie es, den Inhalt von 'zu lesen file_with_4_lines.txt', wenn Sie 'file_with_4_lines.txt' in' stdin' eingeben? Denn so funktioniert 'stdin' nicht ... – ShadowRanger
Es soll die Dateivariable mit stdin gleichsetzen, die dann in count_lines (Datei) verwendet wird. – Chase