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

Python का उपयोग करके Folder को Recursively Zip कैसे करें?


Directory का Zip Archive बनाना

zipfile Module का उपयोग करके Directory का Zip Archive बनाएं। os.walk का उपयोग करके Directory Tree को Walk करें और इसमें सभी Files को Recursively Add करें।

उदाहरण

import os
import zipfile

def zipdir(path, ziph):
    # ziph is zipfile handle
    for root, dirs, files in os.walk(path):
        for file in files:
            file_path = os.path.join(root, file)
            # Archive में Relative Path Store करें
            arcname = os.path.relpath(file_path, path)
            ziph.write(file_path, arcname)

zipf = zipfile.ZipFile('Zipped_file.zip', 'w', zipfile.ZIP_DEFLATED)
zipdir('./my_folder', zipf)
zipf.close()

उपरोक्त Code my_folder के Contents को 'Zipped_file.zip' नामक File में Zip करेगा और इसे Current Directory में Store करेगा।

Improved Version (Error Handling के साथ)

import os
import zipfile

def zip_directory(source_dir, output_zip):
    """Directory को Zip करें Relative Paths Preserve करते हुए"""
    with zipfile.ZipFile(output_zip, 'w', zipfile.ZIP_DEFLATED) as zipf:
        for root, dirs, files in os.walk(source_dir):
            for file in files:
                file_path = os.path.join(root, file)
                # Archive में Relative Path
                arcname = os.path.relpath(file_path, source_dir)
                try:
                    zipf.write(file_path, arcname)
                except (OSError, PermissionError) as e:
                    print(f"Skipping {file_path}: {e}")

# उपयोग
zip_directory('./my_folder', 'Zipped_file.zip')

Pathlib + Zipfile (Modern)

from pathlib import Path
import zipfile

source = Path('my_folder')
with zipfile.ZipFile('archive.zip', 'w', zipfile.ZIP_DEFLATED) as zf:
    for file in source.rglob('*'):
        if file.is_file():
            zf.write(file, file.relative_to(source))

  1. - पायथन का उपयोग करके डायरेक्टरी को रिकर्सिवली कैसे हटाएं?

    यदि आप एक फ़ोल्डर को उसकी सभी फ़ाइलों और फ़ोल्डरों सहित हटाना चाहते हैं, तो आप फ़ोल्डर (या ट्री) को इस प्रकार हटा सकते हैं: >>> import shutil >>> shutil.rmtree(my_folder)

  1. - पायथन का उपयोग करके डायरेक्टरी को रिकर्सिवली कैसे बनाएं?

    रिकर्सिवली डायरेक्टरी बनाने के लिए, उस पथ को प्रदान करें जिसे आप os.makedirs(path) में बनाना चाहते हैं। रिकर्सिवली डायरेक्टरी बनाने के लिए, आपको मौजूदा फ़ोल्डर्स को अनुमति देने के लिए exist_ok को True के रूप में निर्दिष्ट करना होगा। import os os.makedirs(my_folder/another/folder, exist_ok=True)

  1. - पायथन का उपयोग करके फ़ाइल कैसे डिलीट करें?

    आप os मॉड्यूल में फ़ंक्शन्स का उपयोग करके एक सिंगल फ़ाइल या एक सिंगल खाली फ़ोल्डर डिलीट कर सकते हैं। उदाहरण के लिए, यदि आप my_file.txt फ़ाइल डिलीट करना चाहते हैं, >>> import os >>> os.remove(my_file.txt) os.remove का आर्गुमेंट एब्सोल्यूट या रिलेटिव पथ होना चाहिए।