У меня есть ряд подкаталогов, которые содержат ...tar.gz
. Я пытаюсь использовать os.walk()
, чтобы просмотреть отдельные файлы и разархивировать их, используя модуль tarfile
.Как перебрать каталоги и разархивировать файлы tar.gz?
import os
import tarfile
current_wkd = os.getcwd()
output_dir = '.../Tar_unzip/output'
for dirpath, dir, files in os.walk(top=current_wkd):
#print(files) produces
#alpha.tar.gz
#beta.tar.gz
#...etc
for file in files:
tar = tarfile.open(file) #this line produces an error:'file cannot be opened'
tar.extractall(path=output)
tar.close()
Я пытаюсь перебирать разные каталоги и извлечь ..tar.gz
файлы. Я также пытался использовать:
...
for file in files:
if file.endswith('.gz'): #find files that end with .gz
#some folders contain other files
#that may result in an error?
tar = tarfile.open(file)
tar.extractall(path=output_dir)
Я действительно заинтересован в, может ли питон использоваться для перемещения каталогов (итерации) и выполнять некоторые функции, такие как разархивации файлов и т.д.
Любая помощь очень ценится. Я новичок в Python. Спасибо.
От редактирования 27 минут назад, похоже, что вы ищете все файлы gzipped, а не только gzipped tarballs ('file.endswith ('. Gz')' вместо оригинала '.tar.gz''). Таким образом, tarfile.open ('spam.gz') 'собирается создать исключение, потому что ungzipped' spam' не является tarball. Вы можете исправить это, используя 'except tarfile.ReadError:', например, log и пропустить не-tar-файлы, но, вероятно, было бы легче искать '.tar.gz' в первую очередь. – abarnert