पायथन में एक निर्देशिका (फ़ोल्डर) को ज़िप या टार में संपीड़ित करना

व्यापार

पाइथन में एक ज़िप फ़ाइल में एक संपूर्ण निर्देशिका (फ़ोल्डर) को संपीड़ित करते समय, आप फ़ाइलों की सूची बनाने के लिए os.scandir() या os.listdir() का उपयोग कर सकते हैं और उन्हें संपीड़ित करने के लिए zipfile मॉड्यूल का उपयोग कर सकते हैं, लेकिन इसका उपयोग करना आसान है शटिल मॉड्यूल का मेक_आर्काइव () आसान है।

ज़िप के अलावा, अन्य प्रारूप जैसे टार भी समर्थित हैं।

ज़िप फ़ाइल मॉड्यूल का उपयोग करके ज़िप फ़ाइलों को संपीड़ित और असम्पीडित करने के बारे में अधिक जानकारी के लिए, कृपया निम्नलिखित लेख देखें।

एक निर्देशिका (फ़ोल्डर) को एक ज़िप फ़ाइल में संपीड़ित करें:shutil.make_archive()

पहला तर्क, बेस_नाम, बनाई जाने वाली ज़िप फ़ाइल का नाम निर्दिष्ट करता है (विस्तार के बिना), और दूसरा तर्क, प्रारूप, संग्रह प्रारूप को निर्दिष्ट करता है।

तर्क प्रारूप के लिए निम्नलिखित का चयन किया जा सकता है।

  • zip'
  • tar'
  • gztar'
  • bztar'
  • xztar'

तीसरा तर्क, root_dir, संकुचित होने वाली निर्देशिका की रूट निर्देशिका का पथ निर्दिष्ट करता है, और चौथा तर्क, base_dir, root_dir के सापेक्ष संपीडित होने के लिए निर्देशिका का पथ निर्दिष्ट करता है। दोनों डिफ़ॉल्ट रूप से वर्तमान निर्देशिका पर सेट हैं।

यदि base_dir को छोड़ दिया जाता है, तो संपूर्ण root_dir संकुचित हो जाएगा।

data/temp
उदाहरण के लिए, मान लीजिए कि हमारे पास निम्नलिखित संरचना वाली निर्देशिका है।

dir
├── dir_sub
   └── test_sub.txt
└── test.txt
import shutil

shutil.make_archive('data/temp/new_shutil', 'zip', root_dir='data/temp/dir')

new_shutil.zip उपरोक्त सेटिंग्स के साथ बेस_डिर को छोड़ कर संपीड़ित किया जाएगा, निम्नानुसार विघटित हो जाएगा।

new_shutil
├── dir_sub
   └── test_sub.txt
└── test.txt

फिर, यदि root_dir में निर्देशिका base_dir के लिए निर्दिष्ट है, तो निम्नलिखित दिखाया जाएगा।

shutil.make_archive('data/temp/new_shutil_sub', 'zip', root_dir='data/temp/dir', base_dir='dir_sub')

उपरोक्त सेटिंग्स के साथ संपीड़ित new_shutil_sub.zip निम्नानुसार विघटित हो जाएगा।

dir_sub
└── test_sub.txt