是否有可能在Python 3中有效地将字符串写入二进制流

时间:2015-08-06 08:40:27

标签: python python-3.x

直截了当:在Python 3中,是否有可能将字符串写入某个二进制流而无需先在内存中保存它的副本(encode()),而且不会非常慢。

慢,我的意思是如果我有例如一个300米的字符串,将它编码为utf-8需要几百毫秒。事实上,只需要循环并将字符串切成100k块即可。这只是切片,没有编码for ...: s[i:j],这似乎可能是大部分时间占用的内存分配,但我不知道如何验证 - 独自解决它。

1 个答案:

答案 0 :(得分:0)

正如@minitech所建议的那样,编解码器是最佳选择

使用示例:

fd = io.BytesIO()  # Ok here is a byte oriented stream
utfWriter = codecs.getWriter("utf8")
ufd = utfWriter(fd) # ufd is an encoding wrapper around fd
ufd.write("abcd éè efgh") #write a string with non ascii characters
print(fd.getvalue())

b'abcd \xc3\xa9\xc3\xa8 efgh'

允许在航班上进行编码