سؤال

هل من الممكن سرد محتويات ملف LZMA (.7ZIP) دون إلغاء ضغط الملف بأكمله؟ أيضا ، هل يمكنني استخراج ملف واحد من ملف LZMA؟

مشكلتي: لدي ملف .7Z بسعة 30 جيجا بايت والذي يضع ضغطًا إلى> 5 تيرابايت. أود معالجة ملف .7Z الأصلي دون الحاجة إلى القيام بضغط كامل.

هل كانت مفيدة؟

المحلول

نعم. أبدا ب XZ utils. هناك Perl و Python APIs.

يمكنك العثور على الملف الذي تريده من الرؤوس. يتم ضغط كل ملف بشكل منفصل ، بحيث يمكنك استخراج الملف الذي تريده فقط.

نصائح أخرى

قم بتنزيل LZMA922.Tar.BZ2 من صفحة ملفات LZMA SDK على SourceForge ، ثم استخراج الملفات وفتح C/UTIL/7Z/7ZMAIN.C. هناك ، ستجد إجراءات لاستخراج ملف أرشيف معين من أرشيف .7Z. لا تحتاج إلى استخراج جميع البيانات من جميع الإدخالات ، يوضح رمز المثال كيفية استخراج الكود الذي تهتم به فقط. هذا الرمز نفسه له منطق لسرد الإدخالات دون استخراج جميع البيانات المضغوطة.

لقد قمت بحل هذه المشكلة عن طريق تثبيت 7Zip (https://www.7-zip.org/) واستخدام المعلمة ل. علي سبيل المثال:

7z l file.7z

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

import subprocess
output = subprocess.Popen(["7z","l", "file.7z"], stdout=subprocess.PIPE)
output = output.stdout.read().decode("utf-8")

لا تنس التأكد من أن البرنامج 7Z يمكن الوصول إليه في متغير المسار الخاص بك. كان علي أن أفعل هذا يدويًا في النوافذ.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top