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