我有很多.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'}
;但是,文件中的ramdom访问最多可能效率低下,因此您应该添加blocksize=None
以强制每个文件一个分区:
df = dd.read_csv('myfiles.*.7z', storage_options={'compression': 'xz'},
blocksize=None)