【发布时间】:2013-05-11 10:58:50
【问题描述】:
一个名为 == 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 位。
【问题讨论】:
标签: python python-3.x