কম্পিউটার টিউটোরিয়াল

পাইথনে জিপ ফাইল নিয়ে কাজ করা (zipfile মডিউল)

পাইথনের স্ট্যান্ডার্ড লাইব্রেরিতে zipfile নামে একটি মডিউল রয়েছে। এই মডিউল ব্যবহার করে আমরা জিপ ফাইলে বিভিন্ন অপারেশন করতে পারি।

জিপ ফাইলগুলো আর্কাইভ ফাইল ফরম্যাট। জিপ ফাইল লস-লেস ডেটা কম্প্রেশন ফিচারের জন্য ব্যবহৃত হয়, যাতে কম্প্রেসড ফর্ম থেকে এটি পুরোপুরি রিকনস্ট্রাক্ট করা যায়। একটি জিপ ফাইল এক বা একাধিক কম্প্রেসড ফাইল ধারণ করতে পারে।

জিপ ফাইলগুলোর ভালো ফিচারগুলো হলো, এটি স্টোরেজ রিকোয়ারমেন্ট কমায়, এবং স্ট্যান্ডার্ড কানেকশনের ওপর ট্রান্সফার স্পিড বাড়ায়।

পাইথনে zipfile মডিউল ইম্পোর্ট করতে হয় জিপ ফাইল ব্যবহার করতে।

from zipfile import ZipFile

প্রথমে দেখব কিভাবে একটি ডিরেক্টরি থেকে জিপ ফাইল তৈরি করা যায়। এই কেসে, মেইন ডিরেক্টরি একটি ফাইল এবং কিছু অন্য ডিরেক্টরি ধারণ করে।

তো প্রথমে, পুরো ডিরেক্টরি ক্রল করে সব ফাইল ও ফোল্ডার পেতে হবে এবং পাথগুলো লিস্ট হিসেবে সংরক্ষণ করতে হবে। তারপর জিপ ফাইলটি রাইট মোডে খুলে, সংরক্ষিত পাথগুলো থেকে সবকিছু লিখতে হবে।

উদাহরণ কোড

# ডিরেক্টরি ও সাবডিরেক্টরি থেকে সব ফাইল পেয়ে জিপে রূপান্তর
from zipfile import ZipFile
import os

def get_all_files(directory):
    # ডিরেক্টরি থেকে সব ফাইল পাওয়ার ফাংশন
    paths = []
    for root, dirs, files in os.walk(directory):
        for f_name in files:
            path = os.path.join(root, f_name)  # একটি ফাইল পেয়ে পুরো পাথ যোগ করুন
            paths.append(path)
    return paths  # ফাইল পাথগুলো ফেরত দিন

directory = './sample_files'
paths = get_all_files(directory)
# ফাইলনেমগুলো প্রদর্শন করুন
print('The following files will be stored in the zip file')
for file in paths:
    print(file)

# জিপ ফাইলটি রাইট মোডে খোলুন জিপ তৈরি করতে
with ZipFile('my_files.zip', 'w') as zf:
    for file in paths:
        zf.write(file)
print('Zip is created Successfully')

আউটপুট

The following files will be stored in the zip file
./sample_files\TP_python_prev.pdf
./sample_files\text_files\file1.txt
./sample_files\text_files\file2.txt
Zip is created Successfully

এখন দেখব, zipfile মডিউল ব্যবহার করে জিপ ফাইল এক্সট্র্যাক্ট করার পদ্ধতি। জিপ এক্সট্র্যাক্ট করতে, প্রথমে জিপ ফাইলটি read মোডে খুলতে হবে, তারপর extract() বা extractall() মেথড ব্যবহার করে কন্টেন্ট এক্সট্র্যাক্ট করতে হবে। extract() মেথড জিপ ফাইল থেকে ফাইল লোকেট করার জন্য একটি পাথ নেয়।

উদাহরণ কোড

# জিপ ফাইল এক্সট্র্যাক্ট করা
from zipfile import ZipFile

zip_file = 'my_files.zip'
with ZipFile(zip_file, 'r') as zf:
    # জিপের ভিতরের ফাইলগুলো প্রদর্শন
    zf.printdir()
    # জিপ ফাইল থেকে ফাইল এক্সট্র্যাক্ট করা
    zf.extractall()
    print('Zip Extraction Completed')

আউটপুট

File Name                    Modified             Size
sample_files/TP_python_prev.pdf  2018-10-19 13:19:48  1915882
sample_files/text_files/file1.txt  2018-11-06 13:34:46  22
sample_files/text_files/file2.txt  2018-11-06 13:35:02  24
Zip Extraction Completed

এখন, zipfile মডিউলের infolist() মেথড নিয়ে আলোচনা করব। এটি ফাইলনেম, মডিফিকেশন ডেট, ফাইল সাইজ ইত্যাদি ভিন্ন ইনফরমেশনয়ের একটি লিস্ট প্রদান করে।

উদাহরণ কোড

# জিপ ফাইল সম্পর্কে ইনফরমেশন পাওয়া
from zipfile import ZipFile
import datetime

zip_file = 'my_files.zip'
with ZipFile(zip_file, 'r') as zf:
    for detail in zf.infolist():
        print('File Name: ' + detail.filename)
        print('\tModify Date: ' + str(datetime.datetime(*detail.date_time)))
        print('\tZip Version: ' + str(detail.create_version))
        print('\tSystem Version: ' + str(detail.create_system))  # 0 for windows
        print('\tFile Size (Bytes): ' + str(detail.file_size))

আউটপুট

File Name: sample_files/TP_python_prev.pdf
        Modify Date: 2018-10-19 13:19:48
        Zip Version: 20
        System Version: 0
        File Size (Bytes): 1915882
File Name: sample_files/text_files/file1.txt
        Modify Date: 2018-11-06 13:34:46
        Zip Version: 20
        System Version: 0
        File Size (Bytes): 22
File Name: sample_files/text_files/file2.txt
        Modify Date: 2018-11-06 13:35:02
        Zip Version: 20
        System Version: 0
        File Size (Bytes): 24
  1. পাইথনে PDF ফাইল হ্যান্ডলিং: PyPDF2 লাইব্রেরির ব্যবহার

  2. ম্যাক-এ ফাইল জিপ (Zip) করার পদ্ধতি

  3. এয়ারড্রয়েড ফাইল ট্রান্সফার দিয়ে ফাইল ট্রান্সফার

  4. Command Prompt Basic: ফাইল ও ফোল্ডার অপারেশন মাস্টার করুন