一个名为 == a.py == 的测试文件
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
单独运行时没问题。但是在以下情况下会出现问题:
- 运行 python a.py | 更多的
- 按 ctrl+c 退出
然后我得到了 Exception OSError: OSError(22, 'Invalid argument') in <_io.TextIOWrapper name='' mode='w' encoding='cp936'> ignored
我已经在 os.sys.stdout.buffer 操作周围捕获了 OSError,但它仍然出错。
如果我不使用 os.sys.stdout.buffer.flush,则没有错误消息。如果我只使用 print(),一切正常。
那么如何正确地将字节写入标准输出呢?
我正在使用 Windows 7 64 位和 Python 3.3.0 32 位。