python - 在 Python 中存储大文件的最快方法

标签 python compression pickle

recently asked a question关于如何将大型 python 对象保存到文件。我以前遇到过将大量 Python 词典转换为字符串并通过 write() 将它们写入文件的问题。现在我正在使用 pickle 。虽然它有效,但文件非常大(> 5 GB)。我在如此大的文件领域几乎没有经验。我想知道在将这个 pickle 文件存储到内存之前压缩它是否会更快,甚至可能。

最佳答案

您可以使用 bzip2 压缩数据:

from __future__ import with_statement # Only for Python 2.5
import bz2,json,contextlib

hugeData = {'key': {'x': 1, 'y':2}}
with contextlib.closing(bz2.BZ2File('data.json.bz2', 'wb')) as f:
  json.dump(hugeData, f)

像这样加载它:

from __future__ import with_statement # Only for Python 2.5
import bz2,json,contextlib

with contextlib.closing(bz2.BZ2File('data.json.bz2', 'rb')) as f:
  hugeData = json.load(f)

您还可以使用 zlib 压缩数据或 gzip具有几乎相同的界面。但是,zlib 和 gzip 的压缩率都将低于使用 bzip2(或 lzma)实现的压缩率。

关于python - 在 Python 中存储大文件的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7641592/

相关文章:

python - 列表输出中需要 float

c++ - 使用 libtar 压缩目录

encoding - 相关性如何帮助压缩

networking - 通过网络传输 60GB 以上文件的选项有哪些?

python - Pickle - 如果存在则加载变量或创建并保存它

python - 我如何从 python 程序而不是代理中找到面向公众的 ip

Python 如何获取设置位

python - 子列表到字典

pickle - 如何保存一个包含 Drake 植物对象的类对象?

python - 使用自定义属性保存/加载 Pandas 数据框