استفاده از فایل زیپ در پایتون

استفاده از فایل زیپ در پایتون

ابرای ستفاده از فایل زیپ در پایتون ، پایتون به شما این امکان رو میده که کد رو از فایل های ZIP به طور مستقیم از طریق Zipimport وارد کنید. همچنین این ویژگی داخلی جالب شما رو قادر می سازه تا کد پایتون رو برای اهداف مختلف زیپ کنید. اگه اغلب با کد پایتون که در فایل‌های ZIP قرار دارند کار می‌کنید، Zipimport به شما خیلی کمک می‌کند. در هر صورت، یادگیری ایجاد فایل‌های زیپ در پایتون و وارد کردن کد از آنها مهارت ارزشمندی خواهد بود.

حتی اگر کار روزانه شما شامل استفاده از فایل‌های ZIP حاوی کد پایتون نباشه، باز هم با یادگیری Zipimport از طریق این آموزش، مهارت‌های جالب و سرگرم‌کننده جدیدی رو یاد خواهید گرفت.

برای استفاده حداکثری از این آموزش، باید اطلاعات قبلی در مورد نحوه عملکرد سیستم واردات پایتون داشته باشید. همچنین باید با فایل های زیپ آشنایی داشته باشید .

با zipimport آشنا شوید

از پایتون 2.3 به بعد ، میتونید ماژول‌ها و پکیج ها رو از داخل فایل‌های ZIP وارد کنید. این ویژگی به عنوان zipimport شناخته میشه. زمانی که نیاز به توزیع یک پکیج کامل به صورت یک فایل دارید، zipimport بسیار مفید است.

 

PEP 273 اون رو به عنوان یک ویژگی داخلی معرفی کرد. این ویژگی به سرعت به‌عنوان یک مورد ضروری در میان جامعه پایتون پذیرفته شد.

 

zipimport میتونه فرآیند اشتراک‌گذاری و توزیع کد شما رو ساده‌تر کند تا همکاران و کاربران نهایی شما مجبور نباشند در تلاش برای استخراج فایل‌ها برای کارکرد کد باشند.

 

 

 

PEP 302 مجموعه‌ای از قلاب‌های وارداتی را اضافه کرد که پشتیبانی داخلی برای zipimport فراهم می‌کند. اگر می‌خواهید ماژول‌ها و بسته‌ها را از یک فایل ZIP وارد کنید، فقط باید فایل در مسیر جستجوی ماژول پایتون قرار بگیرد.

 

مسیر جستجوی ماژول لیستی از دایرکتوری ها و فایل های ZIP است. در sys.path قرار دارد. هنگامی که یک عبارت import را در کد خود اجرا می کنید، پایتون به طور خودکار موارد موجود در این لیست را جستجو می کند.

فایل های زیپ چه هستند و چرا به آن ها نیاز داریم

عملکرد پوشه‌ها رو توی ویندوز در نظر بگیرید. شما میتونید هرگونه محتویاتی رو داخل اون پوشه ریخته، اون ها رو با ترتیب مد نظرتون مرتب کنید و سپس اون رو فشرده کنید تا حجم کمتری از فضای رو اشغال کنند.

فرضا اگه شما یک پوشه محتوی 20 فایل مختلف داشته باشید و بخواهید اون رو به یک شخص دیگه ایمیل کنید مطمئنا قادر نیستید  همه ی فایل ها رو به صورت یک‌جا ضمیمه کنید. در این صورت با استفاده از یک فایل زیپ و فشرده کردن هر 20 فایل داخل اون فایل زیپ این کار رو به راحتی انجام میدید.

خواندن فایل های زیپ در پایتون

برای خواندن فایل های زیپ در پایتون از کد های زیر استفاده میکنم :

#وارد کردن کتابخانه های مورد نیاز

from zipfile import ZipFile

# مشخص کردن نام فایل زیپ

file_name = “my_python_files.zip”

#باز کردن فایل زیپ

with ZipFile(file_name, ‘r’) as zip:

# پرینت کردن لیست فایل های موجود در فایل زیپ

zip.printdir()

# خارج کردن فایل ها از حالت فشرده

print(‘Extracting all the files now…’)

zip.extractall()

print(‘Done!’)

زیپ در پایتون
نوشتن فایل زیپ در پایتون

فرض کنید میخواهیم تمامی فایل‌های مورد نظرمون رو در یک فایل zip قرار دهیم. برای این منظور از کدهای زیر استفاده می کنیم .

#وارد کردن کتابخانه های مورد نیاز

from zipfile import ZipFile

import os

#ایجاد یک تابع برای لیست کردن دایرکتوری فایل ها

def get_all_file_paths(directory):

file_paths = []

    for root, directories, files in os.walk(directory):

    for filename in files:

        filepath = os.path.join(root, filename)

        file_paths.append(filepath)

return file_paths


# ایجاد تابع اصلی

def main():

# دادن آدرس فایلهایی که قرار است زیپ شوند

directory = ‘./python_files’

# استفاده از تابعی که ایجاد کرده بودیم

file_paths = get_all_file_paths(directory)

# چاپ کردن لیست فایلهایی که قرار است زیپ شوند

print(‘Following files will be zipped:’)

for file_name in file_paths:

    print(file_name)

# وارد کردن فایل ها در فایل زیپ

with ZipFile(‘my_python_files.zip’,’w’) as zip:

    for file in file_paths:

       zip.write(file)

print(‘All files zipped successfully!’)


if __name__ == “__main__”:

main()

 
دریافت اطلاعات مربوط به یک فایل زیپ در پایتون

برای دریافت اطلاعات یک فایل زیپ از کد های زیر استفاده می کنیم :

 

# وارد کردن کتابخانه های مورد نیاز

from zipfile import ZipFile

import datetime

# مشخص کردن اسم فایل زیپ

file_name = “example.zip”

# باز کردن فایل زیپ در حالت read

with ZipFile(file_name, ‘r’) as zip:

    for info in zip.infolist():

        print(info.filename)

        print(‘\tModified:\t’ + str(datetime.datetime(*info.date_time)))

        print(‘\tSystem:\t\t’ + str(info.create_system) + ‘(0 = Windows, 3 = Unix)’)

        print(‘\tZIP version:\t’ + str(info.create_version))

        print(‘\tCompressed:\t’ + str(info.compress_size) + ‘ bytes’)

        print(‘\tUncompressed:\t’ + str(info.file_size) + ‘ bytes’)


در اینجا ،متد infolist () نمونه ای از کلاس ZipInfo را ایجاد می کند که شامل تمام اطلاعات مربوط به فایل zip مورد نظر است.
می توانیم به تمام اطلاعات مانند تاریخ آخرین تغییر فایل‌ها، نام فایل‌ها، سیستمی که در آن فایل‌ها ایجاد شده‌اند، نسخه zip، اندازه فایل‌ها به صورت فشرده و غیر فشرده دسترسی پیدا کنیم.

به طور کلی پایتون یک زبان همه فن حریف است و هر کاری که فکرش را بکنید میتوانید با آن انجام دهید .یک نمونه ی بسیار کوچک از این مسئله استفاده از فایل های زیپ در پایتون است.

همچنین بخوانید : کتابخانه های محبوب پایتون

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دلیل بازگشت وجه