zipfile Python मध्ये ZIP फाइल्स कॉम्प्रेस आणि अनकंप्रेस करण्यासाठी

व्यवसाय

Python मानक लायब्ररीचे zipfile मॉड्यूल फाईल्सला ZIP मध्ये कॉम्प्रेस करण्यासाठी आणि ZIP फाइल्स अनकंप्रेस करण्यासाठी वापरले जाऊ शकते. हे मानक लायब्ररीमध्ये समाविष्ट केले आहे, त्यामुळे कोणत्याही अतिरिक्त स्थापनेची आवश्यकता नाही.

खालील सामग्री स्पष्ट केली आहे.

  • एका झिप फाइलमध्ये एकाधिक फायली कॉम्प्रेस करा
  • विद्यमान ZIP फाइलमध्ये नवीन फाइल जोडा
  • निर्देशिका (फोल्डर) झिप फाईलमध्ये संकुचित करा
  • पासवर्डसह ZIP फाईलमध्ये संकुचित केले
  • ZIP फाइलची सामग्री तपासा.
  • ZIP फाइलची संपूर्ण सामग्री काढा (अनपॅक करा).
  • ZIP फाइलची सामग्री निवडा आणि ती काढा.

एका झिप फाइलमध्ये एकाधिक फायली कॉम्प्रेस करा

एक ZipFile ऑब्जेक्ट तयार करा आणि तुम्हाला कॉम्प्रेस करायच्या असलेल्या फाइल्स जोडण्यासाठी write() पद्धत वापरा.

नवीन ZIP फाईल तयार करण्यासाठी, ZipFile ऑब्जेक्टच्या कन्स्ट्रक्टरचा पहिला वितर्क म्हणून तयार करावयाच्या ZIP फाईलचा मार्ग निर्दिष्ट करा आणि दुसरा वितर्क खालीलप्रमाणेw'

याव्यतिरिक्त, कम्प्रेशन पद्धत तिसरी युक्तिवाद म्हणून निर्दिष्ट केली जाऊ शकते.

  • zipfile.ZIP_STORED:फक्त कॉम्प्रेशनशिवाय एकाधिक फायली एकत्र करा (डीफॉल्ट)
  • zipfile.ZIP_DEFLATED:सामान्य झिप कॉम्प्रेशन (zlib मॉड्यूल आवश्यक)
  • zipfile.ZIP_BZIP2:BZIP2 कॉम्प्रेशन (bz2 मॉड्यूल आवश्यक)
  • zipfile.ZIP_LZMA:LZMA कॉम्प्रेशन (lzma मॉड्यूल आवश्यक)

BZIP2 आणि LZMA चे कॉम्प्रेशन रेशो जास्त आहे (लहान आकारात संकुचित केले जाऊ शकते), परंतु कॉम्प्रेशनसाठी लागणारा वेळ जास्त आहे.

write() पद्धतीमध्ये, पहिल्या वितर्क फाइलनावाची फाइल दुसऱ्या वितर्क आर्कनेमसह ZIP फाइलवर लिहिली जाते. आर्कनेम वगळल्यास, फाइलचे नाव जसे आहे तसे वापरले जाते. arcname निर्देशिका संरचना देखील निर्दिष्ट करू शकते.

ZipFile ऑब्जेक्ट क्लोज() पद्धतीने बंद करणे आवश्यक आहे, परंतु तुम्ही स्टेटमेंटसह वापरल्यास, ब्लॉक पूर्ण झाल्यावर ते आपोआप बंद होईल.

import zipfile

with zipfile.ZipFile('data/temp/new_comp.zip', 'w', compression=zipfile.ZIP_DEFLATED) as new_zip:
    new_zip.write('data/temp/test1.txt', arcname='test1.txt')
    new_zip.write('data/temp/test2.txt', arcname='zipdir/test2.txt')
    new_zip.write('data/temp/test3.txt', arcname='zipdir/sub_dir/test3.txt')

लेखन() पद्धतीचा compress_type आर्ग्युमेंट निर्दिष्ट करून, प्रत्येक फाईलसाठी कॉम्प्रेशन पद्धत निवडणे देखील शक्य आहे.

with zipfile.ZipFile('data/temp/new_comp_single.zip', 'w') as new_zip:
    new_zip.write('data/temp/test1.txt', arcname='test1.txt', compress_type=zipfile.ZIP_DEFLATED)
    new_zip.write('data/temp/test2.txt', arcname='zipdir/test2.txt')
    new_zip.write('data/temp/test3.txt', arcname='zipdir/sub_dir/test3.txt')

विद्यमान ZIP फाइलमध्ये नवीन फाइल जोडा

विद्यमान झिप फाइलमध्ये नवीन फाइल जोडण्यासाठी, ZipFile ऑब्जेक्ट तयार करताना कन्स्ट्रक्टरचा पहिला युक्तिवाद विद्यमान झिप फाइलच्या मार्गावर सेट करा. तसेच, दुसरा युक्तिवाद मोड खालीलप्रमाणे सेट करा.a'

नंतर, वरील उदाहरणाप्रमाणे, फक्त write() पद्धत वापरून फाइल जोडा.

with zipfile.ZipFile('data/temp/new_comp.zip', 'a') as existing_zip:
    existing_zip.write('data/temp/test4.txt', arcname='test4.txt')

निर्देशिका (फोल्डर) झिप फाईलमध्ये संकुचित करा

जर तुम्हाला संपूर्ण डिरेक्ट्री (फोल्डर) एका झिप फाइलमध्ये संकुचित करायची असेल, तर तुम्ही फाइल्सची सूची बनवण्यासाठी os.scandir() किंवा os.listdir() वापरू शकता, परंतु shutil मध्ये make_archive() वापरणे सोपे आहे. मॉड्यूल

पुढील लेख पहा.

पासवर्डसह ZIP फाईलमध्ये संकुचित केले

zipfile मॉड्यूल तुम्हाला पासवर्ड-संरक्षित झिप तयार करण्याची परवानगी देत ​​नाही. तुम्हाला पासवर्ड संरक्षित झिप फाइलमध्ये फाइल कॉम्प्रेस करायची असल्यास, थर्ड पार्टी लायब्ररी pyminizip वापरा.

लक्षात ठेवा की पासवर्ड-संरक्षित झिपचे डीकंप्रेशन झिपफाइल मॉड्यूलसह ​​केले जाऊ शकते (खाली पहा).

ZIP फाइलची सामग्री तपासा.

तुम्ही विद्यमान ZIP फाईलची सामग्री तपासू शकता.

कन्स्ट्रक्टरमधील पहिली वितर्क फाइल विद्यमान झिप फाइलच्या मार्गावर आणि दुसरी युक्तिवाद मोड ‘r’ वर सेट करून ZipFile ऑब्जेक्ट तयार करा. डीफॉल्ट ‘r’ असल्याने मोड आर्ग्युमेंट वगळले जाऊ शकते.

संग्रहित फाइल्सची सूची मिळविण्यासाठी तुम्ही ZipFile ऑब्जेक्टची namelist() पद्धत वापरू शकता.

with zipfile.ZipFile('data/temp/new_comp.zip') as existing_zip:
    print(existing_zip.namelist())
# ['test1.txt', 'zipdir/test2.txt', 'zipdir/sub_dir/test3.txt', 'test4.txt']

ZIP फाइलची संपूर्ण सामग्री काढा (अनपॅक करा).

झिप फाइलची सामग्री अनपॅक करण्यासाठी, वरील उदाहरणाप्रमाणे, कन्स्ट्रक्टरमधील पहिल्या वितर्क फाइलसह विद्यमान ZIP फाइलचा मार्ग आणि दुसरा युक्तिवाद मोड ‘r’ म्हणून एक ZipFile ऑब्जेक्ट तयार करा. मोड वितर्क वगळले जाऊ शकते कारण ते ‘r’ वर डीफॉल्ट आहे.

ZipFile ऑब्जेक्टची extractall() पद्धत ZIP फाइलची संपूर्ण सामग्री काढते (अनकंप्रेस करते). पहिला युक्तिवाद, मार्ग, ज्या डिरेक्टरीचा मार्ग काढायचा आहे ते निर्दिष्ट करतो. ते वगळल्यास, फायली वर्तमान निर्देशिकेत काढल्या जातील.

with zipfile.ZipFile('data/temp/new_comp.zip') as existing_zip:
    existing_zip.extractall('data/temp/ext')

Extractall() पद्धतीचा वितर्क pwd म्हणून पासवर्ड निर्दिष्ट करून पासवर्ड असलेली ZIP फाइल काढली जाऊ शकते.

with zipfile.ZipFile('data/temp/new_comp_with_pass.zip') as pass_zip:
    pass_zip.extractall('data/temp/ext_pass', pwd='password')

ZIP फाइलची सामग्री निवडा आणि ती काढा.

तुम्हाला फक्त काही फाइल्स अनपॅक आणि काढायच्या असतील तर extract() पद्धत वापरा.

extract() पद्धतीचा पहिला आर्ग्युमेंट म्हणजे एक्सट्रॅक्ट करण्‍याच्‍या फाईलचे नाव आणि दुसरा आर्ग्युमेंट पाथ हा एक्‍सट्रॅक्ट करण्‍याच्‍या डिरेक्‍ट्रीचा मार्ग आहे. पथ वितर्क वगळल्यास, फाइल वर्तमान निर्देशिकेत काढली जाईल. एक्सट्रॅक्ट करण्‍याच्‍या फाईलच्‍या नावात जिप फाइलमध्‍ये डिरेक्‍ट्रीचा पाथ समाविष्ट केला पाहिजे जर ती तिथे संग्रहित असेल.

with zipfile.ZipFile('data/temp/new_comp.zip') as existing_zip:
    existing_zip.extract('test1.txt', 'data/temp/ext2')

extractall() पद्धतीप्रमाणे, extract() पद्धत तुम्हाला वितर्क pwd म्हणून पासवर्ड निर्दिष्ट करण्याची परवानगी देते.

with zipfile.ZipFile('data/temp/new_comp_with_pass.zip') as pass_zip:
    pass_zip.extract('test1.txt', 'data/temp/ext_pass2', pwd='password')
Copied title and URL