Tôi có một file zip có chứa ba file zip trong nó như thế này:Làm thế nào để giải nén file zip đệ quy bằng Python
zipfile.zip\
dirA.zip\
a
dirB.zip\
b
dirC.zip\
c
tôi muốn trích xuất tất cả các file zip bên trong mà bên trong file zip trong thư mục với những cái tên này (dirA, dirB, dirC).
Về cơ bản, tôi muốn kết thúc với các lược đồ sau:
output\
dirA\
a
dirB\
b
dirC\
c
Tôi đã thử những điều sau đây:
import os, re
from zipfile import ZipFile
os.makedirs(directory) # where directory is "\output"
with ZipFile(self.archive_name, "r") as archive:
for id, files in data.items():
if files:
print("Creating", id)
dirpath = os.path.join(directory, id)
os.mkdir(dirpath)
for file in files:
match = pattern.match(filename)
new = match.group(2)
new_filename = os.path.join(dirpath, new)
content = archive.open(file).read()
with open(new_filename, "wb") as outfile:
outfile.write(content)
Nhưng nó chỉ trích xuất các tập tin zip và tôi kết thúc với:
output\
dirA\
dirA.zip
dirB\
dirB.zip
dirC\
dirC.zip
Mọi đề xuất bao gồm các đoạn mã sẽ được nhiều người đánh giá cao vì tôi đã thử rất nhiều hings và đọc các tài liệu mà không thành công.
Vui lòng sửa đổi câu hỏi của bạn và cung cấp [_Minimal, Complete, and Verifiable example_] (https://stackoverflow.com/help/mcve) bao gồm những gì trong 'data.items()'. – martineau
@martineau Cảm ơn bạn đã bình luận. Như đã trình bày ở trên, dữ liệu giữ \ zipfile.zip> dirA.zip> một \ zipfile.zip> dirB.zip> b \ zipfile.zip> dirC.zip> c tôi đã cố gắng để làm cho câu hỏi một chút tổng quát hơn và không phụ thuộc vào bất kỳ 'dữ liệu' nào nắm giữ, ngoại trừ thực tế là có các phần nén bên trong của một mã zip. – Yannis