un file di test chiamato == == a.pybyte come scrivono allo 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
E 'ok quando viene eseguito da solo. Ma c'è un problema nel seguente caso:
- Esegui python a.py | più
- premere CTRL + C per uscire
Poi ho avuto Eccezione OSError: OSError (22, 'Invalid argument') in < nome _io.TextIOWrapper = '' mode = 'w' encoding = 'cp936' > ignorato
Ho rilevato l'OSError già attorno alle operazioni os.sys.stdout.buffer, ma continua a funzionare male.
Se non utilizzo os.sys.stdout.buffer.flush, non viene visualizzato alcun messaggio di errore. Se uso solo print(), tutto è OK.
Quindi, come scrivere byte allo stdout correttamente?
Sto usando Windows 7 a 64 bit e Python 3.3.0 a 32 bit.
possibile duplicato di [? Come scrivere dati binari in stdout in python 3] (http://stackoverflow.com/questions/908331/how-to-write-binary-data -in-stdout-in-python-3) –