我有一个压缩文件,其中包含三个压缩文件,就像这样:
zipfile.zip\
dirA.zip\
a
dirB.zip\
b
dirC.zip\
c
我想提取所有嵌套在zip文件中名为dirA、dirB和dirC的目录中的内部zip文件。
基本上,我希望最终得到以下结构:
output\
dirA\
a
dirB\
b
dirC\
c
我已经尝试了以下方法:
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)
但它只是提取了 zip 文件,最终我得到了:
output\
dirA\
dirA.zip
dirB\
dirB.zip
dirC\
dirC.zip
非常感谢任何带有代码片段的建议,因为我已经尝试了很多不同的方法并阅读了文档,但都没有成功。
data.items()
内容的最小完整可验证示例。 - martineau