Python распаковать несколько файлов .gz

Это не работает, потому что специально сконструированы классы из javax/javaee-api/provided зависимостей. Они не используются во время выполнения, поскольку отсутствует реализация методов.

Простое добавление классов из javax.mail/mail/1.4.5 зависимости от пути к классам не помогает, потому что классы из javax/javaee-api/provided уже существуют. Только javax.mail/mail/1.4.5 dependecy решает вашу проблему, но, скорее всего, вам также нужны другие классы из javax/javaee-api/provided.

Что вы можете сделать, так это избавиться от зависимости javax/javaee-api/provided и получить эти классы, например, из зависимостей, предоставляемых целевым сервером приложений. Вы можете использовать, например, следующее:

   <dependency>
        <groupId>org.jboss.spec</groupId>
        <artifactId>jboss-javaee-6.0</artifactId>
        <version>1.0.0.Final</version>
        <type>pom</type>
        <scope>provided</scope>
     </dependency>

Поскольку предоставлена ​​возможность, она не влияет на создаваемый артефакт. Вот почему вы можете использовать его и с другими серверами приложений, чем с JBoss. Это тот же API, что и в вашей исходной зависимости, но он содержит классы normal .

0
задан r0f1 17 January 2019 в 13:22
поделиться

2 ответа

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

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
ответ дан Mauro Baraldi 17 January 2019 в 13:22
поделиться

Сначала вы должны извлечь все 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.

0
ответ дан newkid 17 January 2019 в 13:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: