首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在python3中将二进制数据写入stdout?

如何在python3中将二进制数据写入stdout?
EN

Stack Overflow用户
提问于 2009-05-25 23:04:06
回答 4查看 60.8K关注 0票数 132

在python 2.x中,我可以这样做:

代码语言:javascript
复制
import sys, array
a = array.array('B', range(100))
a.tofile(sys.stdout)

但是现在,我得到了一个TypeError: can't write bytes to text stream。有没有一些我应该使用的秘密编码?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-05-26 00:09:34

一种更好的方法:

代码语言:javascript
复制
import sys
sys.stdout.buffer.write(b"some binary data")
票数 208
EN

Stack Overflow用户

发布于 2009-05-25 23:11:15

代码语言:javascript
复制
import os
os.write(1, a.tostring())

或者,如果它比1更具可读性,则使用os.write(sys.stdout.fileno(), …)

票数 16
EN

Stack Overflow用户

发布于 2019-01-07 19:44:51

这样做的一种惯用方法是:

代码语言:javascript
复制
with os.fdopen(sys.stdout.fileno(), "wb", closefd=False) as stdout:
    stdout.write(b"my bytes object")
    stdout.flush()

好的部分是它使用了普通的文件对象接口,这是每个人在Python中都习惯的。

注意,我设置closefd=False是为了避免在退出with块时关闭sys.stdout。否则,您的程序将无法再打印到stdout。但是,对于其他类型文件描述符,您可能希望跳过该部分。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/908331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档