मैं ऐप इंजन पर चलने वाली एक स्क्रिप्ट पर काम कर रहा हूं, इसलिए मेरे पास रैम सीमाएं हैं जिन्हें मुझे पालन करने की आवश्यकता है (ऐप इंजन के लिए विशिष्ट है जो कि 1024 एमबी है)।पूरी ज़िप फ़ाइल को स्मृति में लोड किए बिना डाउनलोड किए गए ज़िप से फ़ाइल सूची प्राप्त करने का तरीका?
मैं एक बड़ा संग्रह डाउनलोड कर रहा हूं, जिसमें से मुझे फ़ाइल सूची निकालने की आवश्यकता है। संग्रह स्वयं ही एक फ़ाइल है जिसे मैं बाद में ऑफ़लाइन उपयोग (यदि आवश्यक हो) के लिए संग्रहीत कर रहा हूं, लेकिन मुझे फ़ाइल सूची की आवश्यकता है क्योंकि मैं इसे खींचने पर ज़िप संग्रह में परिवर्तनों की खोज कर रहा हूं।
url = 'http://url.to/archive.zip'
r = requests.get(url)
file_mem = StringIO.StringIO(r.content)
zip_file = zipfile.ZipFile(file_mem, 'r')
# get the list of files
file_list = zip_file.namelist() # list of files -- stored in memory
StringIO
वस्तु के साथ
, यह स्मृति में संपूर्ण संग्रह रखने रहा है:
यहाँ मैं अब कोड ब्लॉक है। क्या कोई तरीका है कि मैं अपनी फाइल को r.content
ऑब्जेक्ट से फ़ाइल सूची में जा सकता हूं बिना पूरी फाइल को स्मृति में एक बार रखे?