我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/