Próbuję utworzyć skrypt do rozpakowania wszystkich plików .tar.gz z folderów w jednym katalogu. Na przykład, będę miał plik, który wywoła (testing.tar.gz). Jeśli zrobię to ręcznie, mogę nacisnąć "wyodrębnij tutaj", a plik .tar.gz utworzy nowy plik i wywoła testing.tar. Na koniec, jeśli powtórzę proces naciśnięcia "extract here", plik .tar prodcudes me wszystkie pliki .pdf.Chcę utworzyć skrypt dla pliku unzip (.tar.gz) za pośrednictwem (Python)
Zastanawiam się, jak mogę to zrobić, i mam tutaj swój kod i wygląda na to, że nie działa.
import os
import tarfile
import zipfile
def extract_file(path, to_directory='.'):
if path.endswith('.zip'):
opener, mode = zipfile.ZipFile, 'r'
elif path.endswith('.tar.gz') or path.endswith('.tgz'):
opener, mode = tarfile.open, 'r:gz'
elif path.endswith('.tar.bz2') or path.endswith('.tbz'):
opener, mode = tarfile.open, 'r:bz2'
else:
raise ValueError, "Could not extract `%s` as no appropriate extractor is found" % path
cwd = os.getcwd()
os.chdir(to_directory)
try:
file = opener(path, mode)
try: file.extractall()
finally: file.close()
finally:
os.chdir(cwd)
O ile nie ma sensu używanie Pythona, brzmi to jak praca najlepiej pasująca do skryptu powłoki. – mfaerevaag
extractall przyjmuje katalog docelowy jako parametr, nie trzeba chdir tam iz powrotem –