Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन में ZIPFILE मॉड्यूल के साथ फाइलों को कैसे कंप्रेस करें।

समस्या

आप अजगर में एक सेक फाइल बनाना चाहते हैं।

परिचय

ज़िप फ़ाइलें कई अन्य फ़ाइलों की संपीड़ित सामग्री को पकड़ सकती हैं। किसी फ़ाइल को संपीड़ित करने से डिस्क पर उसका आकार कम हो जाता है, जो इसे इंटरनेट पर या Control-m AFT या Connect Direct या यहां तक ​​कि scp का उपयोग करके सिस्टम के बीच स्थानांतरित करते समय उपयोगी होता है।

Python प्रोग्राम zipfile मॉड्यूल में फंक्शन का उपयोग करके ज़िप फ़ाइलें बनाता है।

इसे कैसे करें...

1. हम ज़िपफाइल और आईओ पैकेज का उपयोग करेंगे। यदि आपके सिस्टम में कोई पैकेज गायब है, तो उन्हें पाइप के साथ स्थापित करें। यदि आप अनिश्चित हैं, तो पैकेजों को मान्य करने के लिए pip फ़्रीज़ कमांड का उपयोग करें।

2. हम एक फ़ाइल में नमूना डेटा लिखने के लिए एक फ़ंक्शन लिखेंगे। नीचे दिया गया फ़ंक्शन write_data_to_files डेटा को इनपुट के रूप में लेता है और वर्तमान निर्देशिका नाम में एक फ़ाइल बनाता है।

उदाहरण

# फ़ंक्शन:write_data_to_filesdef write_data_to_files(inp_data, file_name):"""फ़ंक्शन:इस कोडर को पास किए गए डेटा के साथ एक सीएसवी फ़ाइल बनाएं:inp_data:डेटा को लक्ष्य पर लिखा जाना है filefile_name:डेटा रिटर्न को स्टोर करने के लिए लक्ष्य फ़ाइल नाम:कोई नहीं:फ़ाइल बनाई जानी है और यह कोड एक ही निर्देशिका में है।" ""प्रिंट (एफ" *** डेटा लिखना - {file_name}")throwaway_storage =io.StringIO (inp_data) open(file_name, 'w' के साथ) ) f के रूप में:throwaway_storage में लाइन के लिए:f.write(line)

3. अब हम उपरोक्त चरण में बनाई गई फ़ाइलों को ज़िप करने के लिए एक फ़ंक्शन file_compress लिखेंगे। यह फ़ंक्शन फ़ाइलों की सूची को स्वीकार करता है, उनके माध्यम से जाता है और इसे एक ज़िप फ़ाइल में संपीड़ित करता है। टिप्पणियों में प्रत्येक चरण का विस्तृत विवरण दिया गया है।

अपनी खुद की संपीड़ित ज़िप फ़ाइलें बनाने के लिए, आपको दूसरे तर्क के रूप में 'w' पास करके ZipFile ऑब्जेक्ट को राइट मोड में खोलना होगा।

जब आप ZipFile ऑब्जेक्ट के राइट () मेथड के लिए पाथ पास करते हैं, तो Python उस पाथ पर फाइल को कंप्रेस करेगा और उसे ZIP फाइल में जोड़ देगा।

लिखने () विधि के लिए पहला तर्क जोड़ने के लिए फ़ाइल नाम की एक स्ट्रिंग है।

दूसरा तर्क संपीड़न प्रकार पैरामीटर है - जो कंप्यूटर को बताता है कि फ़ाइलों को संपीड़ित करने के लिए उसे किस एल्गोरिथम का उपयोग करना चाहिए।

उदाहरण

# फ़ंक्शन:file_compressdef file_compress(inp_file_names, out_zip_file):"""फ़ंक्शन:file_compressargs:inp_file_names:zippedout_zip_file होने के लिए फ़ाइल नामों की सूची:आउटपुट ज़िप फ़ाइलरिटर्न:nonassumption:इनपुट फ़ाइल पथ।""" कोड एक ही निर्देशिका में है # संपीड़न के लिए संपीड़न मोड ZIP_DEFLATED का चयन करें# या zipfile.ZIP_STORED केवल फ़ाइलसंपीड़न को संग्रहीत करने के लिए =zipfile.ZIP_DEFLATEDprint(f" *** ज़िप करने के लिए इनपुट फ़ाइल का नाम - {inp_file_names}")# ज़िप फ़ाइल बनाएं पहला पैरामीटर पथ/नाम , दूसरा मोडप्रिंट(f' *** out_zip_file is - {out_zip_file}')zf =zipfile.ZipFile(out_zip_file, mode="w")try:inp_file_names में file_to_write के लिए:# ज़िप फ़ाइल में फ़ाइल जोड़ें# पहली पैरामीटर फ़ाइल zip, zipprint में दूसरा फ़ाइल नाम (f' *** संसाधन फ़ाइल {file_to_write}')zf.write(file_to_write, file_to_write, compress_type=compression) FileNotFoundError को छोड़कर e:print(f' *** zip प्रक्रिया के दौरान अपवाद हुआ - { e}')आखिरकार:# फाइल को बंद करना न भूलें!zf.close()

4. हम दो csv फ़ाइलें बनाने के लिए फ़ंक्शन को कॉल करेंगे और फिर उन्हें ज़िप करेंगे। हम एक फ़ाइल में 1 से अधिक ग्रैंडस्लैम खिताब जीतने वाले टेनिस खिलाड़ियों के डेटा का उपयोग करेंगे - अस्थायी_फाइल 1_for_zip.csv और टेनिस खिलाड़ी जिन्होंने 1 ग्रैंडस्लैम से कम या उसके बराबर जीती है, एक अन्य फ़ाइल में अस्थायी_फाइल 1_for_zip.csv। फिर हम इन दोनों फाइलों को अस्थायी.ज़िप फ़ाइल में ज़िप कर देंगे।

उदाहरण

 zipfileआयात करें ioimport पांडा को pdfile_name1 ="temporary_file1_for_zip.csv"file_name2 ="temporary_file2_for_zip.csv"file_name_list =[file_name1, file_name2]zip_file_name ="temporary.zip"# डेटा के रूप में आयात करें। ,20Djokovic,17Murray,3"""# डेटा फ़ाइल के लिए 2file_data_2 ="""खिलाड़ी,शीर्षकTheim,1Zverev,0Medvedev,0Rublev,0"""# file_data को file_namewrite_data_to_files(file_data_1, file_name1)write_data_to_files# में लिखें file_name को zip_file_namefile_compress(file_name_list, zip_file_name) पर ज़िप करें

उदाहरण

5.उपरोक्त चरणों में चर्चा की गई सभी चीजों को एक साथ रखना।

# डेटा को परिभाषित करें# आइए हम एक फ़ाइल के साथ एक ज़िप फ़ाइल बनाएं zipfileimport ioimport पांडा के रूप में pd# फ़ंक्शन:write_data_to_filesdef write_data_to_files(inp_data, file_name):"""फ़ंक्शन:इस कोडरग्स को पास किए गए डेटा के साथ एक सीएसवी फ़ाइल बनाएं :inp_data :लक्ष्य को लिखा जाने वाला डेटा filefile_name :datareturn को संग्रहीत करने के लिए लक्ष्य फ़ाइल का नाम :nonassumption :बनाई जाने वाली फ़ाइल और यह कोड एक ही निर्देशिका में है।" ""प्रिंट (f" *** डेटा को लिखने के लिए - { file_name}")throwaway_storage =io.StringIO(inp_data) ओपन के साथ (file_name, 'w') f के रूप में:थ्रोअवे_स्टोरेज में लाइन के लिए:f.लिखें (लाइन)# फंक्शन:file_compressdef file_compress (inp_file_names, out_zip_file):"""फंक्शन :file_compressargs :inp_file_names :zippedout_zip_file किए जाने वाले फ़ाइल नामों की सूची :आउटपुट zip filereturn :nonassumption :इनपुट फ़ाइल पथ और यह कोड एक ही निर्देशिका में है। =zipfile.ZIP_DEFLA TEDprint(f" *** ज़िपिंग के लिए इनपुट फ़ाइल का नाम - {inp_file_names}")# ज़िप फ़ाइल बनाएं पहला पैरामीटर पथ/नाम, दूसरा मोडप्रिंट (f' *** out_zip_file is - {out_zip_file}')zf =zipfile. ZipFile (out_zip_file, मोड ="w") कोशिश करें:inp_file_names में file_to_write के लिए:# ज़िप फ़ाइल में फ़ाइल जोड़ें # ज़िप के लिए पहला पैरामीटर फ़ाइल, ज़िपप्रिंट में दूसरा फ़ाइल नाम (f '** प्रसंस्करण फ़ाइल {file_to_write}') zf. लिखें (file_to_write, file_to_write, compress_type=compression) FileNotFoundError को छोड़कर e:print(f' *** zip प्रक्रिया के दौरान अपवाद हुआ - {e}') अंत में:# फ़ाइल को बंद करना न भूलें! zf.close() # __main__ प्रोग्रामिफ़ __name__ =='__main__':# अपनी फ़ाइल का नाम और datafile_name1 ="temporary_file1_for_zip.csv"file_name2 ="temporary_file2_for_zip.csv"file_name_list =[file_name1, file_name2]zip_file_name ="अस्थायी। ,शीर्षकFederer,20Nadal,20Djokovic,17Murray,3"""file_data_2 ="""खिलाड़ी,शीर्षकTheim,1Zverev,0Medvedev,0Rublev,0"""# file_data को file_namewrite_d पर लिखें ata_to_files(file_data_1, file_name1)write_data_to_files(file_data_2, file_name2)# file_name को zip_file_namefile_compress(file_name_list, zip_file_name)
पर ज़िप करें
*** को डेटा लिखना -temporary_file1_for_zip.csv**** को डेटा लिखना -temporary_file2_for_zip.csv*** ज़िप करने के लिए इनपुट फ़ाइल नाम पास किया गया - ['temporary_file1_for_zip.csv', 'temporary_file2_for_zip.csv']** * out_zip_file है - अस्थायी.ज़िप*** संसाधन फ़ाइल अस्थायी_फ़ाइल1_for_zip.csv*** संसाधन फ़ाइल अस्थायी_फ़ाइल2_for_zip.csv

आउटपुट

जब उपरोक्त कोड निष्पादित किया जाता है, तो आउटपुट होता है

  • अस्थायी_फ़ाइल1_for_zip.csv वर्तमान निर्देशिका में बनाया गया है।

  • अस्थायी_फाइल2_for_zip.csv वर्तमान निर्देशिका में बनाया गया है।

  • अस्थायी.ज़िप फ़ाइल वर्तमान निर्देशिका में बनाई गई है।


  1. Mac . पर फ़ाइलों को ज़िप कैसे करें?

    किसी ने एक बार कहा था कि आप कभी भी बहुत अमीर या बहुत पतले नहीं हो सकते; आप यह भी जोड़ सकते हैं कि आपके पास कभी भी बहुत अधिक संग्रहण स्थान नहीं हो सकता है। अपने मैक पर जगह बचाने का एक तरीका फाइलों और फ़ोल्डरों को संपीड़ित (या ज़िप) करना है ताकि वे कम जगह ले सकें, और यह भी एक अच्छा विचार है यदि आप उन्

  1. Linux में ज़िप फ़ाइलें कैसे निकालें

    ज़िप फ़ाइलें उतनी सामान्य नहीं हैं जितनी वे तब हुआ करती थीं जब डाउनलोड की गति धीमी थी और हर सहेजी गई बाइट मायने रखती थी। फिर भी, यह काफी सामान्य फ़ाइल प्रकार है। देर-सबेर आपको शायद एक खोलना पड़ेगा। आपके द्वारा उपयोग किए जाने वाले वितरण के आधार पर, ज़िप संग्रह को निकालना संभवतः काफी आसान है। फिर भी,

  1. MacOS पर 'संपीड़ित' और 'अनज़िप' फ़ाइलों को ज़िप कैसे करें

    एक ज़िप फ़ाइल एक या एक से अधिक फ़ाइलों या फ़ोल्डरों का एक संग्रह है जो एक फ़ाइल में संपीड़ित होती हैं। यह कंप्यूटर पर स्टोरेज स्पेस बचाता है और सभी फाइलों को व्यवस्थित रखता है। एक संपीड़ित फ़ाइल फ्लैश ड्राइव या ईमेल के माध्यम से स्थानांतरित करना बहुत आसान है। सर्वर के लिए संग्रहण स्थान बचाने के लिए