我有很多 .7z
文件,每个文件都包含许多大型的 CSV
文件(超过 1GB)。我怎样才能在 Python 中读取这些文件(特别是 pandas 和 dask 数据帧)?我应该将压缩格式改为其他格式吗?
我相信你应该能够使用以下方式打开文件
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)