में मैं जो इस तरह उस में तीन ज़िप फ़ाइलें हैं एक ज़िप फ़ाइल है:रिकर्सिवली ज़िप फ़ाइल निकालने के लिए कैसे अजगर
zipfile.zip\
dirA.zip\
a
dirB.zip\
b
dirC.zip\
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)
लेकिन यह केवल ज़िप फ़ाइल निकालता है और मैं अंत:
output\
dirA\
a
dirB\
b
dirC\
c
मैं निम्नलिखित की कोशिश की है:
असल में, मैं निम्नलिखित स्कीमा के साथ खत्म करना चाहते हैं
output\
dirA\
dirA.zip
dirB\
dirB.zip
dirC\
dirC.zip
कोई भी कोड-सेगमेंट सहित सुझावों की बहुत सराहना की जाएगी क्योंकि मैंने कई अलग-अलग टी की कोशिश की है बिना सफलता के दस्तावेज़ों को पढ़ा और पढ़ें।
कृपया अपने प्रश्न को संशोधित करें और एक [_ न्यूनतम, पूर्ण, और सत्यापन योग्य उदाहरण_] (https://stackoverflow.com/help/mcve) प्रदान करें जिसमें 'data.items()' में शामिल है। – martineau
@martineau आपकी टिप्पणी के लिए धन्यवाद। जैसा कि ऊपर वर्णित है, डेटा \ zipfile.zip> dirA.zip> एक \ zipfile.zip> dirB.zip> ख \ zipfile.zip> dirC.zip> ग थोड़ा मैं सवाल करने की कोशिश की रखती है जो भी 'डेटा' धारण करता है, उससे अधिक सामान्य और निर्भर नहीं है, इस तथ्य को छोड़कर कि ज़िप के अंदर ज़िप हैं। – Yannis