【发布时间】:2016-07-17 01:54:28
【问题描述】:
我有一个 zip 文件,其中包含三个 zip 文件,如下所示:
zipfile.zip\
dirA.zip\
a
dirB.zip\
b
dirC.zip\
c
我想提取具有这些名称(dirA、dirB、dirC)的目录中 zip 文件中的所有内部 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()中的内容的Minimal, Complete, and Verifiable example。 -
@martineau 感谢您的评论。如上所述,数据包含 \zipfile.zip > dirA.zip > a \zipfile.zip > dirB.zip > b \zipfile.zip > dirC.zip > c 我试图让这个问题更笼统,而不是依赖于包含任何“数据”,除了拉链内有拉链这一事实。
标签: python python-3.x zip unzip zipfile