में एक ज़िप फ़ाइल में फ़ाइल जैसी ऑब्जेक्ट जोड़ना पाइथन ज़िपफ़ाइल एपीआई ZipFile.write
या बाइट स्ट्रिंग को ZipFile.writestr
पर फ़ाइल पथ से गुजरने की अनुमति देता है लेकिन बीच में कुछ भी नहीं है। मैं ऑब्जेक्ट जैसी फ़ाइल को पास करने में सक्षम होना चाहता हूं, इस मामले में django.core.files.storage.DefaultStorage
लेकिन सिद्धांत में किसी भी फ़ाइल जैसी वस्तु। फिलहाल मुझे लगता है कि मुझे फ़ाइल को डिस्क में सहेजना होगा, या इसे स्मृति में पढ़ना होगा। इनमें से कोई भी सही नहीं है।पायथन
Q
पायथन
5
A
उत्तर
6
आप सही हैं, वे केवल दो विकल्प हैं। यदि आपकी DefaultStorage
ऑब्जेक्ट बड़ी है, तो आप इसे पहले डिस्क पर सहेजने के साथ जाना चाहेंगे; अन्यथा, मैं का प्रयोग करेंगे:
zipped = ZipFile(...)
zipped.writestr('archive_name', default_storage_object.read())
तो default_storage_object
एक StringIO
वस्तु है, यह default_storage_object.getvalue()
उपयोग कर सकते हैं।