Ho un file zip che contiene tre file zip in questo modo:Come estrarre file zip in modo ricorsivo in Python
zipfile.zip\
dirA.zip\
a
dirB.zip\
b
dirC.zip\
c
voglio estrarre tutti i file zip interiori che sono all'interno del file zip nella directory con questi nomi (dirA, dirB, dirC).
Fondamentalmente, io voglio finire con il seguente schema:
output\
dirA\
a
dirB\
b
dirC\
c
Ho provato quanto segue:
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)
Ma estrae solo il file zip e io alla fine con:
output\
dirA\
dirA.zip
dirB\
dirB.zip
dirC\
dirC.zip
Qualsiasi suggerimento compresi i segmenti di codice sarà molto apprezzato perché ho provato così tante diverse t le ali e leggere i documenti senza successo.
Modifica la domanda e fornire un [_Minimal, completa e verificabile example_] (https://stackoverflow.com/help/mcve) che include ciò che è in 'data.items()'. – martineau
@martineau Grazie per il tuo commento. Come descritto in precedenza, i dati vale \ zipfile.zip> dirA.zip> un \ zipfile.zip> dirB.zip> b \ zipfile.zip> dirC.zip> c ho cercato di rendere la questione un po ' più generale e non dipendente da qualsiasi "dato", tranne per il fatto che ci sono zip all'interno di un zip. – Yannis