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.

questionAnswers(3)

yourAnswerToTheQuestion