python - 在 Python 中序列化二进制数据

标签 python python-2.7 serialization binary

我有一些二进制数据,它们以字节字符串数组的形式存在于 Python 中。

是否有一种可移植的方法来序列化其他语言可以读取的数据?

JSON 输了,因为我刚刚发现它没有真正的方法来存储二进制数据;它的字符串应该是 Unicode。

我不想使用 pickle 因为我不想有安全风险,这限制了它在其他 Python 程序中的使用。

有什么建议吗?我真的很想使用内置库(或至少是标准 Anaconda 发行版的一部分)。

最佳答案

如果您只需要字符串中的二进制数据并且可以轻松恢复各个字符串之间的边界,您可以直接将它们作为原始字符串写入文件。

如果您不能轻松地恢复字符串边界,JSON 似乎是一个不错的选择:

a = [b"abc\xf3\x9c\xc6", b"xyz"]
serialised = json.dumps([s.decode("latin1") for s in a])
print [s.encode("latin1") for s in json.loads(serialised)]

将打印

['abc\xf3\x9c\xc6', 'xyz']

这里的技巧是任意二进制字符串都是有效的 latin1,因此它们总是可以被解码为 Unicode 并再次编码回原始字符串。

关于python - 在 Python 中序列化二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22621143/

相关文章:

python - Pycket session 管理器不在 Tornado 中工作

Python:通过具有多个 Excepts 的 Try/Except block 传播异常

c# - 设置 BinaryFormatter.TypeFormat 似乎无效

C++ 按字段读取结构并将结构直接写入流

python - 在 beautifulsoup 中保存 <br/>

python - Pandas :从每周到每天重新采样,并带有偏移量

Python heapify() 时间复杂度

python-2.7 - 更改 geopandas 中的单个补丁颜色

python - 捕获视频的颜色直方图均衡

json - Delphi: super 对象序列化自定义转换器/逆变器