【问题标题】:How can I read many large .7z files containing many CSV files?如何读取包含许多 CSV 文件的许多大型 .7z 文件?
【发布时间】:2019-07-10 17:13:50
【问题描述】:

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

【问题讨论】:

    标签: pandas csv dataframe dask 7zip


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 2017-03-09
      • 2011-11-18
      • 1970-01-01
      • 2015-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多