القراء مثلك يساعدون في دعم MUO. عند إجراء عملية شراء باستخدام الروابط الموجودة على موقعنا ، فقد نربح عمولة تابعة. اقرأ أكثر.

يعد الضغط طريقة رائعة لضغط عدة ملفات ودمجها في ملف واحد. لا يوفر هذا مساحة التخزين فحسب ، بل يوفر أيضًا النطاق الترددي عند نقل ملف عبر الشبكة. من أفضل ميزات zip أنه يعمل على جميع المنصات الرئيسية: Windows و Linux و Mac.

يستخدم Zip ضغطًا بدون فقدان البيانات بحيث يحتفظ بجميع البيانات عند ضغطها وفك ضغطها. يمكنك أيضًا تشفير وفك تشفير ملفاتك المضغوطة.

مع العديد من الميزات لاستكشافها ، اكتشف كيف يمكنك قراءة الملفات وضغطها وفك ضغطها باستخدام وحدة Python zipfile.

ما هي وحدة zipfile؟

يمكنك استخدام وحدة zipfile القياسية لمعالجة الملفات المضغوطة باستخدام Python. باستخدام هذه الوحدة ، يمكنك فتح ملفات مضغوطة وقراءتها ، وقراءة البيانات الوصفية الخاصة بها ، وإنشاء ملف مضغوط ، وضغطه ، وفك ضغط الملفات. تتوفر ثلاث طرق للضغط: Deflate و Bzip2 و LZMA.

أحد الأشياء التي تفتقر إليها الوحدة هو القدرة على التعامل مع ملفات متعددة الأقراص ، لكنها تتعامل مع امتداد ZIP64. يمكنه أيضًا فك تشفير الأرشيفات المضغوطة ولكن لا يقوم بتشفيرها. باستخدام وحدة zipfile ، يمكنك الحصول على بيانات تعريف ملف مضغوط مثل تاريخ ووقت التعديل. يمكنك أيضًا جلب تفاصيل مثل نظام التشغيل المستخدم لإنشاء الملف وإصدار zip وحجم الملف بالتنسيق المضغوط وغير المضغوط.

instagram viewer

كيفية ضغط الملفات باستخدام بايثون

يمكنك ضغط ملفات متعددة في أرشيف واحد باستخدام وحدة Python zipfile. قم باستيراد ملف ملف مضغوط وحدة من ملف مضغوط حزمة لأداء عمليات zip المطلوبة. استيراد أيضا ال نظام التشغيل وحدة لتحديد الملفات وحفظها.

تحديد وظيفة get_all_file_paths (). يجب أن يقبل معلمة دليل تحتوي على مسار المجلد الذي يحتوي على الملفات المراد ضغطها.

قم بتهيئة قائمة فارغة ستخزن قائمة مسارات الملفات. استخدم حلقة for للحصول على المحتويات الكاملة للدليل الهدف باستخدام امتداد os.walk () وظيفة. تقوم هذه الوظيفة بجلب أسماء الملفات في شجرة الدليل عن طريق التحرك على طولها في نهج من أعلى إلى أسفل أو من أسفل إلى أعلى. لكل دليل ، تقوم الدالة بإرجاع ثلاث مجموعات تحتوي على root و dirs والملفات.

الجذر عبارة عن سلسلة تحتوي على المسار الكامل للدليل. تتضمن قائمة dirs جميع الدلائل الفرعية الموجودة في الدليل. تحتوي قائمة الملفات على جميع الملفات الموجودة في الدليل.

داخل الحلقة ، أعلن أخرى حلقة للتكرار على قائمة الملفات. استخدم ال os.path.join () وظيفة لدمج اسم الدليل مع كل اسم ملف لعمل مسار كامل. بعد ذلك ، قم بإلحاق اسم الملف الكامل هذا بالقائمة التي أنشأتها مسبقًا. بمجرد انتهاء هذه العملية ، قم بإرجاع قائمة مسارات الملفات.

# استيراد الوحدات المطلوبة
من ملف مضغوط يستورد ملف مضغوط
يستورد نظام التشغيل

# إنشاء وظيفة للحصول على جميع مسارات الملفات
defget_all_file_paths(الدليل):
# تهيئة قائمة فارغة لتخزين مسارات الملفات
file_paths = []

# تصفح الملفات
لجذر, الدلائل, الملفاتفينظام التشغيل.يمشي(الدليل):
لاسم الملف في الملفات:
# انضم إلى الجذر واسم الملف لإنشاء مسار ملف كامل
filepath = os.path.join (الجذر ، اسم الملف)
file_paths.ألحق(مسار الملف)

# إرجاع جميع مسارات الملفات
يعود file_paths

قم بتخزين مسار المجلد الذي يحتوي على الملفات التي تريد ضغطها في متغير يسمى الدليل. استدعاء الوظيفة ، get_all_file_paths () التي قمت بإنشائها مسبقًا وتخزين القيمة التي يتم إرجاعها بها file_paths.

اعرض رسالة للمستخدم لإعلامه بأن هذه هي الملفات التي سيقوم البرنامج بضغطها. كرر الملفات واعرض أسمائها.

قم بتمرير الاسم الذي تريد أن يحتويه ملف zip الخاص بك مع المواصفات التي تجعل البرنامج يقوم بإرجاع ملف قابل للكتابة باستخدام العبارة with للتعامل مع الاستثناءات. كرر كل ملف واستخدم وظيفة write () فوق الملف القابل للكتابة إلى ملف مضغوط.

عند اكتمال العملية ، أخرج رسالة توضح أن البرنامج قام بضغط جميع الملفات بنجاح.

# مسار للمجلد الذي تريد ضغطه
الدليل = "./pythonzip"

# استدعاء وظيفة للحصول على جميع مسارات الملفات في الدليل
file_paths = get_all_file_paths (الدليل)

# طباعة قائمة جميع الملفات التي تريد ضغطها
مطبعة("قائمة الملفات التي سيتم ضغطها:")

لـ file_name في file_paths:
مطبعة(اسم الملف)

# كتابة الملفات إلى ملف مضغوط
مع ملف مضغوط("my_file.zip", 'w') مثل أَزِيز:
# اكتب كل ملف واحدًا تلو الآخر
للملف في file_paths:
أَزِيز.يكتب(ملف)

مطبعة("جميع الملفات مضغوطة!")

كيفية فك ضغط الملفات باستخدام بايثون

يعد تنفيذ فك ضغط الملفات باستخدام وحدة zipfile أسهل كثيرًا. قم باستيراد ملف ملف مضغوط الحزمة من ملف مضغوط الوحدة النمطية وتخزين اسم الملف المضغوط الذي تريد استخراجه في متغير. استخدم العبارة with للتعامل مع الاستثناءات وفتح الملف الذي تريد استخراجه في وضع القراءة. استخدم ال printdir () وظيفة لعرض جدول محتويات الملفات الموجودة في الرمز البريدي.

اعرض رسالة تقدم تفيد بأنك تقوم باستخراج الملفات واستخدام ملف استخراج كافة() وظيفة لاستخراج محتويات ملف مضغوط إلى دليل العمل الحالي. بدلاً من ذلك ، يمكنك تضمين معلمة مسار لتغيير المسار حيث يستخرج البرنامج الملفات.

اعرض رسالة باستخدام ملف مطبعة بيان عند الانتهاء من العملية.

# استيراد الوحدات المطلوبة
من ملف مضغوط يستورد ملف مضغوط

# قم بتمرير اسم الملف المضغوط الذي تريد استخراجه
file_name = "extract.zip"

# فتح ملف مضغوط في وضع القراءة
مع ZipFile (file_name ، 'r') مثل أَزِيز:
# عرض محتويات الملف المضغوط
أَزِيز.printdir()

# استخراج جميع الملفات
مطبعة("استخراج قيد التقدم ...")
أَزِيز.استخراج كافة()
مطبعة("يتم استخراج كافة الملفات!")

المزيد حول الملفات المضغوطة

اكتسبت ملفات Zip شعبية كبيرة وتستخدم منذ عقود حتى الآن. تتيح لك مواقع الويب الشهيرة مثل GitHub و Google Drive تنزيل مجموعة من الملفات كأرشيف مضغوط. يقوم برنامج zip بضغط مجموعة من الملفات في حزمة واحدة. هذا على عكس أداة مثل tar التي تجمع الملفات معًا ولكنها لا تضغطها.

إذا كنت ترغب في تشفير ملفاتك باستخدام خوارزمية أكثر كفاءة ، فإن ملفات RAR هي السبيل للذهاب. يستخدم RAR خوارزمية AES-128 أفضل من خوارزمية الانكماش التي تستخدمها ملفات zip. في النهاية ، اختر أفضل ما يلبي احتياجاتك.