为了账号安全,请及时绑定邮箱和手机立即绑定

如何在python3.3中将字节写入stdout

如何在python3.3中将字节写入stdout

慕田峪4524236 2021-03-12 16:17:18
一个名为== a.py ==的测试文件import osif __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退出然后我得到异常OSError:<_io.TextIOWrapper name =''mode ='w'encoding ='cp936'>中的OSError(22,'Invalid arguments')OSError(忽略)我已经在os.sys.stdout.buffer操作周围发现了OSError,但是仍然出错。如果我不使用os.sys.stdout.buffer.flush,则没有错误消息。如果我只使用print(),一切都很好。那么如何正确地将字节写入标准输出呢?我正在使用Windows 7 64位和Python 3.3.0 32位。
查看完整描述

1 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

您可以使用os.fdopen不同的模式重新打开标准输出。您可以使用来获取stdout的文件号sys.stdout.fileno()。


例子:


>>> fp = os.fdopen(sys.stdout.fileno(), 'wb')

>>> fp.write(b'Hello, world')

12

>>> sys.stdout.mode

'w'

>>> fp.mode

'wb'

>>> fp.flush()

Hello, world>>> 


查看完整回答
反对 回复 2021-03-24
  • 1 回答
  • 0 关注
  • 228 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号