Это не работает, потому что специально сконструированы классы из 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 .
Сначала получите список всех файлов.
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-файлом.
Сначала вы должны извлечь все 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
.