将非ascii内容从pymongo写入文件

时间:2014-12-21 22:05:21

标签: python mongodb encoding pymongo bson

我有一个将网络流量存储到Mongo数据库中的系统,现在我想从特定连接中检索数据包,然后将所有数据转储到磁盘上的文件中。在具体情况下,它是gziped数据,因此以\x1f\x8b\x08\x00

开头

我检索数据的代码如下:

with codecs.open("filename", "wb", "utf-8") as fh:
    for packet in packets:
        fh.write(packet["data"])

执行代码时,出现错误

UnicodeDecodeError: 'ascii' codec can't decode byte 0x8b in position 1: ordinal not in range(128)

已经使用过Python 2,我意识到编码总是很棘手。我已经尝试了许多编码和解码组合,但是Python失败并出现类似的消息,或者生成的文件已损坏(例如,在其上抛出.decode('latin-1')会产生正确的unicode字符串但是当写入文件时,而不是撰写\x1f\x8b\x08\x00结果为\x1f\xc2\x8b\x08\x00)。

此外,基本上阅读任何问题和相应的答案并不是真的我:-(任何建议?解码Python中的gziped数据不是一个选项,因为数据可能是任意的二进制blob。

1 个答案:

答案 0 :(得分:0)

使用ISO-8859-1作为编码可以解决问题......