在python 2.x中,我可以这样做:
import sys, array
a = array.array('B', range(100))
a.tofile(sys.stdout)
但是现在,我得到了一个TypeError: can't write bytes to text stream
。有没有一些我应该使用的秘密编码?
发布于 2009-05-26 00:09:34
一种更好的方法:
import sys
sys.stdout.buffer.write(b"some binary data")
发布于 2009-05-25 23:11:15
import os
os.write(1, a.tostring())
或者,如果它比1
更具可读性,则使用os.write(sys.stdout.fileno(), …)
。
发布于 2019-01-07 19:44:51
这样做的一种惯用方法是:
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。但是,对于其他类型文件描述符,您可能希望跳过该部分。
https://stackoverflow.com/questions/908331
复制相似问题