मैं डेटाबेस से पूछताछ कर रहा हूं और पाइथन का उपयोग करके परिणामों को संग्रहित कर रहा हूं, और मैं डेटा को संपीड़ित करने की कोशिश कर रहा हूं क्योंकि मैं इसे लॉग फ़ाइलों में लिखता हूं। हालांकि, मुझे इसके साथ कुछ समस्याएं आ रही हैं।संपीड़न कोडेक्स पाइथन में कैसे काम करते हैं?
मेरे कोड इस तरह दिखता है:
log_file = codecs.open(archive_file, 'w', 'bz2')
for id, f1, f2, f3 in cursor:
log_file.write('%s %s %s %s\n' % (id, f1 or 'NULL', f2 or 'NULL', f3))
लेकिन, मेरा आउटपुट फ़ाइल 1,409,780 के आकार की है। फ़ाइल परिणामों पर bunzip2
चल रहा है जिसमें 943,634 के आकार वाली फ़ाइल है, और bzip2
चल रहा है, जिसके परिणामस्वरूप 217,275 के आकार में। दूसरे शब्दों में, असम्पीडित फ़ाइल पाइथन के bzip कोडेक का उपयोग करके संपीड़ित फ़ाइल से काफी छोटी है। क्या कमांड लाइन पर bzip2
चलाने के अलावा इसे ठीक करने का कोई तरीका है?
मैंने पाइथन के जीजीआईपी कोडेक (codecs.open(archive_file, 'a+', 'zip')
पर लाइन को बदलने) को यह देखने के लिए प्रयास किया कि यह समस्या ठीक हो गई है या नहीं। मुझे अभी भी बड़ी फाइलें मिलती हैं, लेकिन जब मैं फ़ाइल को असम्पीडित करने का प्रयास करता हूं तो मुझे gzip: archive_file: not in gzip format
त्रुटि भी मिलती है। वहां क्या चल रहा है?
संपादित: मैं मूल रूप से फ़ाइल संलग्न मोड में खोला था, नहीं मोड लिखें। हालांकि यह समस्या हो सकती है या नहीं भी हो सकती है, फिर भी सवाल तब होता है जब फ़ाइल 'डब्ल्यू' मोड में खोली जाती है।
आप संलग्न करने के लिए फ़ाइल क्यों खोल रहे हैं? – JoshD
यह धीरे-धीरे डेटाबेस से रिकॉर्ड्स को ट्रिम करता है और उन्हें एक संग्रह फ़ाइल में सहेजता है, इसलिए संग्रह फ़ाइल धीरे-धीरे तब तक बढ़ती है जब तक यह मशीन से कॉपी नहीं हो जाती है। –