Как я могу прочитать много больших файлов .7z, содержащих много файлов CSV? - PullRequest
0 голосов
/ 17 февраля 2019

У меня много .7z файлов, каждый файл содержит много больших CSV файлов (более 1 ГБ).Как я могу прочитать это на python (особенно pandas и dask data frame)?Должен ли я изменить формат сжатия на что-то другое?

1 Ответ

0 голосов
/ 17 февраля 2019

Полагаю, вы сможете открыть файл, используя

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)
...