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

时间:2019-02-16 22:33:12

标签: pandas csv dataframe dask 7zip

我有许多.7z文件,每个文件包含许多大CSV文件(超过1GB)。如何在python中读取此内容(尤其是熊猫和dask数据框)?我应该将压缩格式更改为其他格式吗?

1 个答案:

答案 0 :(得分:1)

我相信您应该可以使用

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

严格来说,这是指xz文件格式,但也可能适用于7z。如果没有,则需要使用libarchive。

要与Dask一起使用,您可以使用dask.delayed对每个文件执行上述操作。 dd.read_csv也可以直接指定storage_options={'compression': 'xz'};但是,随机访问 文件最多可能效率很低,因此您应该添加blocksize=None来强制每个文件一个分区:

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