Como extrair o arquivo zip recursivamente em Python
Eu tenho um arquivo zip que contém três arquivos zip assim:
zipfile.zip\
dirA.zip\
a
dirB.zip\
b
dirC.zip\
c
Eu quero extrair todos os arquivos zip internos que estão dentro do arquivo zip nos diretórios com esses nomes (dirA, dirB, dirC).
Basicamente, quero terminar com o seguinte esquema:
output\
dirA\
a
dirB\
b
dirC\
c
Eu tentei o seguinte:
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)
Mas apenas extrai o arquivo zip e acabo com:
output\
dirA\
dirA.zip
dirB\
dirB.zip
dirC\
dirC.zip
Qualquersugestões, incluindo segmentos de código será muito apreciado porque tentei muitas coisas diferentes e li os documentos sem sucesso.