Python ملف مضغوط مع مثال

⚡ ملخص ذكي

Python يُنشئ هذا البرنامج ملفات ZIP باستخدام وحدتي shutil و zipfile المدمجتين. ستتعلم هنا كيفية ضغط مجلد كامل باستخدام make_archive()، وضغط ملفات محددة باستخدام ZipFile، و...tract، قائمة، وقراءة محتويات الأرشيف.

  • 🗜️ make_archive(): تقوم الدالة shutil.make_archive() بضغط مجلد كامل في ملف .zip.
  • 📄 ZipFile.write(): تقوم الدالة ZipFile.write() بإضافة ملفات محددة إلى الأرشيف واحداً تلو الآخر.
  • 📂 extracطويل(): ملف مضغوط.extracتقوم الدالة tall() بفك ضغط كل ملف من الأرشيف إلى مجلد.
  • 📋 namelist(): تقوم الدالة ZipFile.namelist() بعرض أسماء الملفات داخل ملف ZIP المضغوط.
  • 🤖 مساعدة الذكاء الاصطناعي: أدوات الذكاء الاصطناعي مثل Copilot تقوم بإنشاء وفك ضغط الملفات على الفور.

Python ملف مضغوط

Python يسمح لك بإنشاء أرشيفات zip/tar بسرعة.

الأمر التالي سوف يقوم بضغط الدليل بأكمله

shutil.make_archive(output_filename, 'zip', dir_name)

يتيح لك الأمر التالي التحكم في الملفات التي تريد أرشفتها

ZipFile.write(filename)

كيفية ضغط مجلد كامل في ملف مضغوط Python

فيما يلي خطوات إنشاء ملف مضغوط Python

الخطوة 1) لإنشاء ملف أرشيف من Pythonتأكد من صحة بيان الاستيراد الخاص بك وترتيبه. هنا بيان الاستيراد للأرشيف هو from shutil import make_archive

Python ملف مضغوط

Code تفسير

  • استيراد فئة make_archive من وحدة shutil
  • استخدم وظيفة التقسيم لتقسيم الدليل واسم الملف من المسار إلى موقع الملف النصي (guru99)
  • ثم نقوم باستدعاء الوحدة "shutil.make_archive("guru99 archive, "zip", root_dir)" لإنشاء ملف الأرشيف، والذي سيكون بتنسيق zip
  • بعد ذلك نقوم بتمرير الدليل الجذري للأشياء التي نريد ضغطها. لذلك سيتم ضغط كل شيء في الدليل
  • عند تشغيل الكود، يمكنك رؤية ملف zip الأرشيفي الذي تم إنشاؤه على الجانب الأيمن من اللوحة.

الخطوة 2) بمجرد إنشاء ملف الأرشيف الخاص بك، يمكنك النقر بزر الماوس الأيمن على الملف وتحديد نظام التشغيل، وسيظهر ملفات الأرشيف الخاصة بك فيه كما هو موضح أدناه

Python ملف مضغوط

سيظهر الآن ملف archive.zip الخاص بك على نظام التشغيل الخاص بك (Windows إكسبلورر)

Python ملف مضغوط

الخطوة 3) عندما تنقر نقرًا مزدوجًا فوق الملف، سترى قائمة بجميع الملفات الموجودة هناك.

Python ملف مضغوط

كيفية ضغط ملفات محددة باستخدام ZipFile

الخطوة 4) In Python يمكننا التحكم بشكل أكبر في الأرشيف حيث يمكننا تحديد الملف المحدد الذي سيتم تضمينه ضمن الأرشيف. في حالتنا، سنقوم بتضمين ملفين ضمن الأرشيف "guru99.txt" و "guru99.txt.bak".

Python ملف مضغوط

Code تفسير

  • استيراد فئة Zipfile من ملف مضغوط Python وحدة. تمنح هذه الوحدة التحكم الكامل في إنشاء ملفات مضغوطة
  • نقوم بإنشاء ملف Zip جديد بالاسم ("testguru99.zip, "w")
  • يتطلب إنشاء فئة Zipfile جديدة تمرير الإذن لأنه ملف، لذا تحتاج إلى كتابة المعلومات في الملف بتنسيق newzip
  • استخدمنا المتغير "newzip" للإشارة إلى الملف المضغوط الذي أنشأناه
  • باستخدام دالة الكتابة على المتغير "newzip"، نضيف الملفين "guru99.txt" و"guru99.txt.bak" إلى الأرشيف

عند تنفيذ الكود، يمكنك رؤية الملف تم إنشاؤه على الجانب الأيمن من اللوحة بالاسم "guru99.zip"

ملاحظات: هنا لا نعطي أي أمر "لإغلاق" الملف مثل "newzip. Close" لأننا نستخدم "مع" قفل النطاق، لذلك عندما يقع البرنامج خارج هذا النطاق سيتم تنظيف الملف وإغلاقه تلقائيًا.

الخطوة 5) عند -> انقر بزر الماوس الأيمن على الملف (testguru99.zip) و-> حدد نظام التشغيل الخاص بك (Windows إكسبلورر)سيتم عرض ملفات الأرشيف الموجودة في المجلد كما هو موضح أدناه.

Python ملف مضغوط

عندما تنقر نقرًا مزدوجًا فوق الملف "testguru99.zip"، فسيتم فتح نافذة أخرى، والتي ستظهر الملفات المضمنة فيها.

Python ملف مضغوط

اكتملت Python Code لإنشاء ملف ZIP

ها هو الكود الكامل

Python 2 مثال

import os
import shutil
from zipfile import ZipFile
from os import path
from shutil import make_archive

def main():
# Check if file exists
	if path.exists("guru99.txt"):
# get the path to the file in the current directory
	src = path.realpath("guru99.txt");
# rename the original file
	os.rename("career.guru99.txt","guru99.txt")
# now put things into a ZIP archive
	root_dir,tail = path.split(src)
    shutil.make_archive("guru99 archive", "zip", root_dir)
# more fine-grained control over ZIP files
	with ZipFile("testguru99.zip","w") as newzip:
	newzip.write("guru99.txt")
	    newzip.write("guru99.txt.bak")
if __name__== "__main__":
	  main()

Python 3 مثال

import os
import shutil
from zipfile import ZipFile
from os import path
from shutil import make_archive

    # Check if file exists
       if path.exists("guru99.txt"):
    # get the path to the file in the current directory
        src = path.realpath("guru99.txt");
    # rename the original file
        os.rename("career.guru99.txt","guru99.txt")
    # now put things into a ZIP archive
        root_dir,tail = path.split(src)
        shutil.make_archive("guru99 archive","zip",root_dir)
    # more fine-grained control over ZIP files
        with ZipFile("testguru99.zip", "w") as newzip:
            newzip.write("guru99.txt")
            newzip.write("guru99.txt.bak")

كيفية الخروجtracفك ضغط ملف ZIP Python

لفك ضغط ملف مضغوط، افتحه في وضع القراءة باستخدام ZipFile وقم باستدعاء extractall() to extracفي كل ملف، أو مثالtract() لاستخراج عنصر واحد.

from zipfile import ZipFile

with ZipFile("testguru99.zip", "r") as myzip:
    myzip.extractall("extracted_files")

السابقtracتقوم الدالة tall() بكتابة جميع الملفات المؤرشفة في المجلد الذي تمرره كوسيط.

كيفية عرض قائمة الملفات في ملف ZIP Archive

يمكنك فحص الأرشيف بدون استخدام برنامج إكسلtracتقوم الدالة namelist() بإرجاع أسماء جميع الملفات المخزنة داخل ملف ZIP.

from zipfile import ZipFile

with ZipFile("testguru99.zip", "r") as myzip:
    print(myzip.namelist())

هذا يطبع قائمة بأسماء الملفات الموجودة في الأرشيف.

كيفية قراءة ملف داخل ملف مضغوط (ZIP) Archive

يمكنك قراءة ملف عضو مباشرة من الأرشيف دون الحاجة إلى فك الضغط.ping قم بنسخه إلى القرص باستخدام طريقة open() الخاصة بـ ZipFile.

from zipfile import ZipFile

with ZipFile("testguru99.zip", "r") as myzip:
    with myzip.open("guru99.txt") as f:
        print(f.read())

يُعد هذا مفيدًا عندما تحتاج فقط إلى محتويات ملف واحد من أرشيف كبير.

الأسئلة الشائعة

استخدم shutil.make_archive(name, 'zip', root_dir) لضغط دليل، أو افتح ملف ZipFile في وضع الكتابة واستدعِ write() لإضافة ملفات محددة إلى الأرشيف.

تقوم الدالة shutil.make_archive() بضغط مجلد كامل في استدعاء واحد، بينما توفر الدالة zipfile.ZipFile تحكمًا أدق، مما يسمح لك بإضافة الملفات أو قراءتها أو استخراجها.tracالملفات الفردية داخل الأرشيف.

افتح الملف المضغوط باستخدام ZipFile('file.zip', 'r') ثم استدعِ extracطويل('مجلد') إلى مثالtracلا شيء، أو مثالtract('name') لاستخراج ملف واحد من الأرشيف.

افتح ملف ZipFile في وضع القراءة واستدعِ الدالة namelist()، التي تُعيد قائمة بجميع أسماء الملفات المخزنة في الأرشيف بدون استثناءات.tracتلامس أيًا منهم.

تقوم عبارة with بإغلاق الأرشيف تلقائيًا عند انتهاء الكتلة، حتى في حالة حدوث خطأ، لذلك لا تحتاج إلى استدعاء close() يدويًا.

تقوم المساعدات الذكية مثل GitHub Copilot بإكمال استدعاءات ZipFile و make_archive() تلقائيًا، وتنشئ حلقات تقوم بضغط أو فك ضغط العديد من الملفات من وصف بلغة بسيطة.

نعم. يمكن للأدوات المدعومة بالذكاء الاصطناعي أتمتة كتابة نصوص النسخ الاحتياطي والأرشفة، والاختيار بين shutil و zipfile، وإضافة معالجة الأخطاء للملفات المفقودة أو الأرشيفات التالفة.

نعم. افتح ملف ZipFile، ثم استخدم دالة open() الخاصة به على ملف عضو لقراءة محتوياته مباشرةً، بدون استثناءات.tracنسخ الأرشيف بأكمله إلى القرص.

تلخيص هذه التدوينة بـ: