Tôi đang cố tạo một kịch bản để giải nén tất cả các tệp .tar.gz từ các thư mục trong một thư mục. Ví dụ, tôi sẽ có một tập tin mà nó gọi (testing.tar.gz). Sau đó, nếu tôi làm theo cách thủ công, tôi có thể nhấn để "trích xuất ở đây", sau đó tệp .tar.gz sẽ tạo một tệp mới và nó gọi testing.tar. Cuối cùng, nếu tôi lặp lại quá trình nhấn "trích xuất ở đây", tệp .tar sẽ gửi cho tôi tất cả các tệp .pdf.Tôi muốn tạo một tập lệnh để giải nén tập tin (.tar.gz) qua (Python)
Tôi tự hỏi làm thế nào tôi có thể làm điều đó, và tôi có mã của tôi ở đây và nó có vẻ không thực sự làm việc tho.
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)
Trừ khi có điểm bằng cách sử dụng Python, nó giống như một công việc phù hợp nhất cho tập lệnh shell. – mfaerevaag
extractall lấy thư mục đích làm tham số, không cần phải chdir qua lại –