التابع TarFile.extract()‎‎ في بايثون

من موسوعة حسوب
مراجعة 19:31، 14 نوفمبر 2018 بواسطة Mohammed Taher (نقاش | مساهمات) (←‏المعاملات)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)


يستخرج التابع عضوًا من ملف الأرشيف إلى المجلد الحالي مستخدمًا اسمه الكامل، ويجري استخراج معلومات الملف الخاص به بأكبر دقة ممكنة.

البنية العامة

TarFile.extract(member, path="", set_attrs=True, *, numeric_owner=False)

المعاملات

member

‎يمكن للعضو المراد استخراجه من الأرشيف أن يكون اسم ملف filename أو كائن TarInfo.

path

يمكن تعيين مجلد مختلف باستخدام المعامل path الذي يمكن أن يكون كائنًا شبيهًا بالمسارات path-like object.

ملاحظة: أصبح بالإمكان استخدام كائنات شبيهة بالمسارات path-like objects مع المعامل path في الإصدار 3.6 من بايثون.

set_attrs

إن أخذ المعامل القيمة True فإنّ التابع سيعين معلومات الملف (المالك، وقت التعديل، ووضع الملف)، وإن أخذ المعامل القيمة False فلن يعين التابع تلك المعلومات.

ملاحظة: أضيف المعامل set_attrs في الإصدار 3.2 من بايثون.

numeric_owner

إن أخذ هذا المعامل القيمة True فإن الأعداد uid و gid من ملف tar ستستخدم لتعيين المالك أو المجموعة للملفات المستخرجة. أما إذا أخذ المعامل القيمة False تستخدم القيم المسماة من ملف tar.

ملاحظة: أضيف المعامل numeric_owner في الإصدار 3.5 من بايثون.

القيمة المعادة

يعيد التابع القيمة None.

ملاحظة:

لا يهتمّ التابع extract()‎ بالكثير من المشاكل التي تحدث أثناء عملية استخراج الملفات؛ لذا ينصح باستخدام التابع extractall()‎ في معظم الحالات.

تحذير:

لا تستخرج الملفات من ملفات أرشيف غير موثوقة المصدر دون التحري عنها مسبقًا. من المحتمل أن تكون الملفات قد أُنشئت خارج المسار path، كأن يمتلك الأعضاء مسارات ملفات مطلقة تبدأ بالرمز "/" أو "..".

أمثلة

يبين المثال التالي آلية عمل التابع:

>>> import tarfile
>>> tar = tarfile.open('files.tar')
>>> tar.extract('file2.html')

انظر أيضًا

  • التابع TarFile.extractall()‎: يستخرج التابع جميع الأعضاء من ملف الأرشيف إلى المجلد الحالي أو المسار المعطى.
  • التابع TarFile.extractfile()‎: يستخرج التابع العضو المحدّد في المعاملات من ملف الأرشيف ككائن ملف.

مصادر

صفحة Read and write tar archive files في توثيق بايثون الرسمي.