Python распаковать несколько файлов .gz - PullRequest
0 голосов
/ 17 января 2019

Я сжал файл на несколько частей, используя 7zip:

ИМЕЕТ:

foo.txt.gz.001
foo.txt.gz.002
foo.txt.gz.003
foo.txt.gz.004
foo.txt.gz.005

ХОТИТЕ:

foo.txt

Как мне разархивировать и объединить эти куски, чтобы получить один файл с использованием python?

Ответы [ 2 ]

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

Сначала получите список всех файлов.

files = ['/path/to/foo.txt.gz.001', '/path/to/foo.txt.gz.002', '/path/to/foo.txt.gz.003']

Затем выполните итерации по каждому файлу и добавьте в файл результатов.

with open('./result.gz', 'ab') as result:  # append in binary mode
    for f in files:
        with open(f, 'rb') as tmpf:        # open in binary mode also
            result.write(tmpf.read())

Затем извлечение использует zipfile lib. Вы можете использовать tempfile , чтобы избежать обработки временным zip-файлом.

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

Сначала вы должны извлечь все zip-файлы последовательно:

import zipfile

paths = ["path_to_1", "path_to_2" ]
extract_paths = ["path_to_extract1", "path_to_extrac2"]

for i in range(0, paths):
    zip_ref = zipfile.ZipFile(paths[i], 'r')
    zip_ref.extractall(extract_paths[i])
    zip_ref.close()

Далее вы можете перейти к извлеченному местоположению и read() отдельным файлам с open в string. Объедините эти строки и сохраните в foo.txt.

...