पाइथन मानक पुस्तकालयको zipfile मोड्युल जिपमा फाइलहरू कम्प्रेस गर्न र ZIP फाइलहरू अनकम्प्रेस गर्न प्रयोग गर्न सकिन्छ। यसलाई मानक पुस्तकालयमा समावेश गरिएको छ, त्यसैले कुनै अतिरिक्त स्थापना आवश्यक पर्दैन।
निम्न सामग्री व्याख्या गरिएको छ।
- जिप फाइलमा बहु फाइलहरू कम्प्रेस गर्नुहोस्
- अवस्थित ZIP फाइलमा नयाँ फाइल थप्नुहोस्
- जिप फाइलमा डाइरेक्टरी (फोल्डर) कम्प्रेस गर्नुहोस्
- पासवर्डको साथ जिप फाइलमा कम्प्रेस गरियो
- ZIP फाइलको सामग्री जाँच गर्नुहोस्।
- ZIP फाइलको सम्पूर्ण सामग्रीहरू निकाल्नुहोस् (अनप्याक गर्नुहोस्)।
- ZIP फाइलको सामग्री चयन गर्नुहोस् र यसलाई निकाल्नुहोस्।
- जिप फाइलमा बहु फाइलहरू कम्प्रेस गर्नुहोस्
- अवस्थित ZIP फाइलमा नयाँ फाइल थप्नुहोस्
- जिप फाइलमा डाइरेक्टरी (फोल्डर) कम्प्रेस गर्नुहोस्
- पासवर्डको साथ जिप फाइलमा कम्प्रेस गरियो
- ZIP फाइलको सामग्री जाँच गर्नुहोस्।
- ZIP फाइलको सम्पूर्ण सामग्रीहरू निकाल्नुहोस् (अनप्याक गर्नुहोस्)।
- ZIP फाइलको सामग्री चयन गर्नुहोस् र यसलाई निकाल्नुहोस्।
जिप फाइलमा बहु फाइलहरू कम्प्रेस गर्नुहोस्
एउटा ZipFile वस्तु सिर्जना गर्नुहोस् र तपाईले कम्प्रेस गर्न चाहनुहुने फाइलहरू थप्न राइट() विधि प्रयोग गर्नुहोस्।
नयाँ ZIP फाइल सिर्जना गर्न, ZipFile वस्तुको कन्स्ट्रक्टरको पहिलो तर्कको रूपमा सिर्जना गरिने ZIP फाइलको मार्ग निर्दिष्ट गर्नुहोस्, र निम्नानुसार दोस्रो तर्क।w'
थप रूपमा, सङ्कुचन विधि तेस्रो तर्कको रूपमा निर्दिष्ट गर्न सकिन्छ।
zipfile.ZIP_STORED:केवल सङ्कुचन बिना धेरै फाइलहरू संयोजन गर्नुहोस् (पूर्वनिर्धारित)zipfile.ZIP_DEFLATED:सामान्य जिप कम्प्रेसन (zlib मोड्युल आवश्यक)zipfile.ZIP_BZIP2:BZIP2 कम्प्रेसन (bz2 मोड्युल आवश्यक)zipfile.ZIP_LZMA:LZMA कम्प्रेसन (lzma मोड्युल आवश्यक)
BZIP2 र LZMA सँग उच्च कम्प्रेसन अनुपात छ (सानो आकारमा संकुचित गर्न सकिन्छ), तर कम्प्रेसनको लागि आवश्यक समय लामो छ।
लेखन() विधिमा, पहिलो आर्गुमेन्ट फाइलनाम भएको फाइल दोस्रो आर्गुमेन्ट आर्कनेमको साथ जिप फाइलमा लेखिएको छ। यदि arcname मेटाइयो भने, फाइलनाम को रूपमा प्रयोग गरिन्छ। 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 फाइलमा नयाँ फाइल थप्नुहोस्
अवस्थित zip फाइलमा नयाँ फाइल थप्न, ZipFile वस्तु सिर्जना गर्दा अवस्थित zip फाइलको मार्गमा कन्स्ट्रक्टरको पहिलो तर्क सेट गर्नुहोस्। साथै, निम्नानुसार दोस्रो तर्क मोड सेट गर्नुहोस्।a'
त्यसपछि, माथिको उदाहरणमा जस्तै, लेखन() विधि प्रयोग गरेर फाइल थप्नुहोस्।
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() प्रयोग गर्न सजिलो छ। मोड्युल।
निम्न लेख हेर्नुहोस्।
- सम्बन्धित लेखहरू:पाइथनमा जिप वा टारमा डाइरेक्टरी (फोल्डर) कम्प्रेस गर्दै
पासवर्डको साथ जिप फाइलमा कम्प्रेस गरियो
zipfile मोड्युलले तपाईंलाई पासवर्ड-सुरक्षित ZIPहरू सिर्जना गर्न अनुमति दिँदैन। यदि तपाइँ पासवर्ड सुरक्षित जिप फाइलमा फाइल कम्प्रेस गर्न चाहनुहुन्छ भने, तेस्रो पक्ष पुस्तकालय pyminizip प्रयोग गर्नुहोस्।
नोट गर्नुहोस् कि पासवर्ड-सुरक्षित ZIP को डिकम्प्रेसन zipfile मोड्युलको साथ गर्न सकिन्छ (तल हेर्नुहोस्)।
ZIP फाइलको सामग्री जाँच गर्नुहोस्।
तपाईं अवस्थित 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 फाइलको सामग्रीहरू अनप्याक गर्न, माथिको उदाहरणमा जस्तै, अवस्थित 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 को रूपमा पासवर्ड निर्दिष्ट गरेर निकाल्न सकिन्छ।
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')


