如何读取包含多个CSV文件的许多大型.7z文件?

3

我有很多 .7z 文件,每个文件都包含许多大型的 CSV 文件(超过 1GB)。我怎样才能在 Python 中读取这些文件(特别是 pandas 和 dask 数据帧)?我应该将压缩格式改为其他格式吗?

1个回答

0

我相信你应该能够使用以下方式打开文件

import lzma
with lzma.open("myfile.7z", "r") as f:
    df = pd.read_csv(f, ...)

严格来说,这是针对 xz 文件格式的,但也可能适用于 7z。如果不行,您将需要使用 libarchive。

对于 Dask 的使用,您可以对每个文件执行上述操作,使用 dask.delayeddd.read_csv 直接允许您指定 storage_options={'compression': 'xz'};然而,在文件内部进行随机访问最多只能达到低效率,因此您应该添加 blocksize=None 来强制每个文件一个分区:

df = dd.read_csv('myfiles.*.7z', storage_options={'compression': 'xz'},
                 blocksize=None)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接