Eine Testdatei == == a.py, wie Bytes schreiben benannt nach stdout in python3.3
import os
if __name__ == '__main__':
for x in range(0,1000):
try:
os.sys.stdout.buffer.write(b"hello\r\n")
os.sys.stdout.buffer.flush()
except OSError:
pass
Es ist in Ordnung, wenn es alleine läuft. Aber im folgenden Fall gibt es ein Problem:
- Führen Sie python a.py | mehr
- Drücken Sie Strg + c zu beenden
Dann habe ich Ausnahme OSError: OSError (22, 'Invalid argument') in < _io.TextIOWrapper name = '' mode = 'w' encoding = 'cp936' > ignoriert
Ich habe den OSError bereits um die os.sys.stdout.buffer-Operationen, aber es geht immer noch schief.
Wenn ich os.sys.stdout.buffer.flush nicht verwende, dann gibt es keine Fehlermeldung. Wenn ich nur print() benutze, ist alles in Ordnung.
Wie also Bytes korrekt in die Stdout schreiben?
Ich benutze Windows 7 64 Bit und Python 3.3.0 32 Bit.
möglich Duplikat [? Wie Binärdaten in stdout in Python 3 schreiben] (http://stackoverflow.com/questions/908331/how-to-write-binary-data -in-stdout-in-python-3) –