Iva*_*din 88 python python-3.x
在python 2.x中,我可以这样做:
import sys, array
a = array.array('B', range(100))
a.tofile(sys.stdout)Run Code Online (Sandbox Code Playgroud)
然而,现在,我得到了一个TypeError: can't write bytes to text stream.我应该使用一些秘密编码吗?
Ben*_*son 144
更好的方法:
import sys
sys.stdout.buffer.write(b"some binary data")
Run Code Online (Sandbox Code Playgroud)
Yaj*_*ajo 14
这样做的惯用方法(仅适用于 Python 3)是:
with os.fdopen(sys.stdout.fileno(), "wb", closefd=False) as stdout:
stdout.write(b"my bytes object")
stdout.flush()
Run Code Online (Sandbox Code Playgroud)
好的部分是它使用普通的文件对象接口,每个人在 Python 中都习惯了。
请注意,我设置closefd=False为sys.stdout在退出with块时避免关闭。否则,您的程序将无法再打印到标准输出。但是,对于其他类型的文件描述符,您可能希望跳过该部分。
Ale*_*lli 13
import os
os.write(1, a.tostring())
Run Code Online (Sandbox Code Playgroud)
或者,os.write(sys.stdout.fileno(), …)如果这比1你更可读.