原问题:我有一个StringIO对象,如何将其转换为BytesIO对象?
更新:更通用的问题是如何在Python3中将二进制(编码)类似文件的对象转换为解码的类似文件的对象?
我想到的天真方法是:
import io
sio = io.StringIO('wello horld')
bio = io.BytesIO(sio.read().encode('utf8'))
print(bio.read()) # prints b'wello horld'
有更高效且优雅的方法吗?上面的代码将所有内容读入内存,将其编码而不是以块流的方式传输数据。
例如,对于反转问题(BytesIO
-> StringIO
),存在一个名为io.TextIOWrapper的类,它正是这样做的(请参见此答案)。