program1.py:Warum liest stdin zeilenweise statt Wort für Wort wie eine Zeichenfolge?
a = "this is a test"
for x in a:
print(x)
program2.py:
a = """this is a test
with more than one line
three, to be exact"""
for x in a:
print(x)
program3.py:
import sys
for x in sys.stdin:
print(x)
infile.txt:
Dies ist ein Test
mit mehreren Linien
genau das gleiche wie das zweite Beispiel
aber mit mehr Worten
Warum in einer separaten Zeile jedes Zeichen in der Zeichenfolge program1 und program2 beide ausgegeben haben, aber wenn wir cat infile.txt | python3 program3.py
laufen, es gibt der Text Zeile für Zeile?
weil 'sys.stdin' kein String ist - es ist eine spezielle Klasse, die konstruiert wurde, Zeile für Zeile zu lesen. – furas
'sys.stdin' ist * kein' str' * -Objekt, es ist ein Dateiobjekt. –