الفرق بين المراجعتين ل"Python/tarfile/open"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
 
(مراجعة متوسطة واحدة بواسطة نفس المستخدم غير معروضة)
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE:الدالة <code>tarfile‎.open()‎</code> في بايثون}}</noinclude>
 
<noinclude>{{DISPLAYTITLE:الدالة <code>tarfile‎.open()‎</code> في بايثون}}</noinclude>
 
تفتح الدالة ملف tar المعطى وتعيد الدالة كائن <code>[[Python/TarFile|TarFile]]</code> للمسار المعطى. راجع قسم كائنات <code>[[Python/TarFile|TarFile]]</code> للاطلاع على المزيد من المعلومات حول هذه الكائنات والمعاملات المفتاحية المتاحة للاستخدام.
 
تفتح الدالة ملف tar المعطى وتعيد الدالة كائن <code>[[Python/TarFile|TarFile]]</code> للمسار المعطى. راجع قسم كائنات <code>[[Python/TarFile|TarFile]]</code> للاطلاع على المزيد من المعلومات حول هذه الكائنات والمعاملات المفتاحية المتاحة للاستخدام.
 
+
==البنية العامة==
== البنية العامة ==
 
 
 
 
<syntaxhighlight lang="python3">
 
<syntaxhighlight lang="python3">
 
tarfile.open(name=None, mode='r', fileobj=None, bufsize=10240, **kwargs)
 
tarfile.open(name=None, mode='r', fileobj=None, bufsize=10240, **kwargs)
 
</syntaxhighlight>
 
</syntaxhighlight>
== المعاملات ==
+
==المعاملات==
 
+
===<code>name</code>===
=== <code>name</code> ===
 
 
 
 
مسار ملف الأرشيف tar المراد فتحه.
 
مسار ملف الأرشيف tar المراد فتحه.
  
 
ملاحظة: في الإصدار 3.6 من بايثون أصبح المعامل <code>name</code> يستقبل كائنات شبيهة بالمسارات path-like objects.
 
ملاحظة: في الإصدار 3.6 من بايثون أصبح المعامل <code>name</code> يستقبل كائنات شبيهة بالمسارات path-like objects.
 
+
===<code>mode</code>===
=== <code>mode</code> ===
 
 
يجب أن يكون هذا المعامل [[Python/str|سلسلة نصية]] بالصيغة ‎<code>'filemode[:compression]'</code>‎، ويأخذ القيمة الافتراضية <code>'r'</code>. يعرض الجدول التالي قائمة كامل بالقيم المتاحة للاستخدام مع هذا المعامل:
 
يجب أن يكون هذا المعامل [[Python/str|سلسلة نصية]] بالصيغة ‎<code>'filemode[:compression]'</code>‎، ويأخذ القيمة الافتراضية <code>'r'</code>. يعرض الجدول التالي قائمة كامل بالقيم المتاحة للاستخدام مع هذا المعامل:
 +
{| class="wikitable"
 +
!الوضع
 +
!الإجراء
 +
|-
 +
|<code>‎'r'‎</code> أو ‎<code>'r:*'‎</code>
 +
|يُفتح الأرشيف للقراءة مع إجراء عملية ضغط غير محدّدة transparent compression (ينصح به).
 +
|-
 +
|‎<code>'r:'‎</code>
 +
|يُفتح الأرشيف للقراءة بشكل خاص exclusively دون إجراء عملية ضغط.
 +
|-
 +
|‎<code>'r:gz'‎</code>
 +
|يُفتح الأرشيف للقراءة مع الضغط بخوارزمية gzip.
 +
|-
 +
|‎<code>'r:bz2'‎</code>
 +
|يُفتح الأرشيف للقراءة مع الضغط بخوارزمية bzip2.
 +
|-
 +
|‎<code>'r:xz'‎</code>
 +
|يُفتح الأرشيف للقراءة مع الضغط بخوارزمية lzma.
 +
|-
 +
|<code>‎'x'‎</code> أو ‎<code>'x:'‎</code>
 +
|تُنشئ الدالة ملف tar بشكل خاص دون إجراء عملية ضغط. تُطلق الدالة الاستثناء <code>FileExistsError</code> إن كان الملف موجودًا فعلًا.
 +
|-
 +
|‎<code>'x:gz'‎</code>
 +
|تُنشئ الدالة ملف tar مع الضغط بخوارزمية gzip. تُطلق الدالة الاستثناء <code>FileExistsError</code> إن كان الملف موجودًا فعلًا.
 +
|-
 +
|‎<code>'x:bz2'‎</code>
 +
|تُنشئ الدالة ملف tar مع الضغط بخوارزمية bzip2. تُطلق الدالة الاستثناء <code>FileExistsError</code> إن كان الملف موجودًا فعلًا.
 +
|-
 +
|‎<code>'x:xz'‎</code>
 +
|تُنشئ الدالة ملف tar مع الضغط بخوارزمية lzma. تُطلق الدالة الاستثناء <code>FileExistsError</code> إن كان الملف موجودًا فعلًا.
 +
|-
 +
|<code>‎'a'‎</code> أو ‎<code>'a:'‎</code>
 +
|تفتح الدالة الملف في نمط الإلحاق appending دون إجراء عملية ضغط. تُنشئ الدالة الملف إن لم يكن موجودًا.
 +
|-
 +
|<code>‎'w'‎</code> أو ‎<code>'w:'‎</code>
 +
|تفتح الدالة الملف للكتابة فيه دون إجراء عملية ضغط.
 +
|-
 +
|‎<code>'w:gz'‎</code>
 +
|تفتح الدالة الملف للكتابة فيه مع إلضغط بخورازمية gzip.
 +
|-
 +
|‎<code>'w:bz2'‎</code>
 +
|تفتح الدالة الملف للكتابة فيه مع إلضغط بخورازمية bzip2.
 +
|-
 +
|‎<code>'w:xz'‎</code>
 +
|تفتح الدالة الملف للكتابة فيه مع إلضغط بخورازمية lzma.
 +
|}
  
 
'''ملاحظة:''' في الإصدار 3.5 من بايثون أضيف الوضع <code>'x'</code> (الإنشاء الخاص exclusive creation).
 
'''ملاحظة:''' في الإصدار 3.5 من بايثون أضيف الوضع <code>'x'</code> (الإنشاء الخاص exclusive creation).
سطر 22: سطر 63:
 
لاحظ أنّه ليس بالإمكان استخدام <code>'a:gz'</code> أو <code>'a:bz2'</code> أو <code>'a:xz'</code>. إن كان الوضع <code>mode</code> غير مناسب لفتح ملف (مضغوط) معين للقراءة، تطلق الدالة الاستثناء <code>ReadError</code>، ويمكن تجنب ذلك باستخدام الوضع <code>'r'</code>. أما إذا كانت طريقة الضغط غير مدعومة، فستطلق الدالة الاستثناء <code>CompressionError</code>.
 
لاحظ أنّه ليس بالإمكان استخدام <code>'a:gz'</code> أو <code>'a:bz2'</code> أو <code>'a:xz'</code>. إن كان الوضع <code>mode</code> غير مناسب لفتح ملف (مضغوط) معين للقراءة، تطلق الدالة الاستثناء <code>ReadError</code>، ويمكن تجنب ذلك باستخدام الوضع <code>'r'</code>. أما إذا كانت طريقة الضغط غير مدعومة، فستطلق الدالة الاستثناء <code>CompressionError</code>.
  
هناك صيغة أخرى للمعامل <code>mode</code> وتستخدم لأغراض خاصة، وهذه الصيغة هي: <code>‎'filemode|[compression]'‎</code>. ستعيد الدالة <code>tarfile.open()</code>‎ كائن <code>[[Python/TarFile|TarFile]]</code> يعالج بدوره بياناته كتدفق من الكتل stream of blocks، ولن تُجرى عمليات بحث عشوائية على الملف.
+
هناك صيغة أخرى للمعامل <code>mode</code> وتستخدم لأغراض خاصة، وهذه الصيغة هي: <code>‎'filemode|[compression]'‎</code>. ستعيد الدالة <code>tarfile.open()</code>‎ كائن <code>[[Python/TarFile|TarFile]]</code> يعالج بدوره بياناته كتدفق من الكتل stream of blocks، ولن تُجرى عمليات بحث عشوائية على الملف. يمكن استخدام هذه الصيغة مع <code>sys.stdin</code> مثلًا، أو مع كائن ملف مَنْفَذْ socket file object أو مع مشغّل أشرطة tape device. ولكن تكون كائنات <code>[[Python/TarFile|TarFile]]</code> محدودة ولا تسمح بالوصول العشوائي. يوضّح الجدول التالي الأوضاع المتاحة في الوقت الحاضر:
=== <code>fileobj</code> ===
+
{| class="wikitable"
 +
!الوضع
 +
!الحدث
 +
|-
 +
|‎<code><nowiki>'r|*'‎</nowiki></code>
 +
|تفتح الدالة تدفّقًا من كتل tar للقراءة مع إجراء عملية ضغط غير محدّدة transparent compression.
 +
|-
 +
|‎<code><nowiki>'r|'‎</nowiki></code>
 +
|تفتح الدالة تدفقًا من كتل tar غير المضغوطة للقراءة.
 +
|-
 +
|‎<code><nowiki>'r|gz'‎</nowiki></code>
 +
|تفتح الدالة تدفقًا من كتل tar المضغوطة بخوارزمية gzip للقراءة.
 +
|-
 +
|‎<code><nowiki>'r|bz2'‎</nowiki></code>
 +
|تفتح الدالة تدفقًا من كتل tar المضغوطة بخوارزمية bzip2 للقراءة.
 +
|-
 +
|‎<code><nowiki>'r|xz'‎</nowiki></code>
 +
|تفتح الدالة تدفقًا من كتل tar المضغوطة بخوارزمية lzma للقراءة.
 +
|-
 +
|‎<code><nowiki>'w|'‎</nowiki></code>
 +
|تفتح الدالة تدفقًا من كتل tar غير المضغوطة للكتابة.
 +
|-
 +
|‎<code><nowiki>'w|gz'‎</nowiki></code>
 +
|تفتح الدالة تدفقًا من كتل tar المضغوطة بخوارزمية gzip للكتابة.‎
 +
|-
 +
|‎<code><nowiki>'w|bz2'‎</nowiki></code>
 +
|تفتح الدالة تدفقًا من كتل tar المضغوطة بخوارزمية bzip2 للكتابة.
 +
|-
 +
|‎<code><nowiki>'w|xz'‎</nowiki></code>
 +
|تفتح الدالة تدفقًا من كتل tar المضغوطة بخوارزمية lzma للكتابة.
 +
|}
  
 +
===<code>fileobj</code>===
 
إن جرى تحديد قيمة للمعامل <code>fileobj</code> فإنها ستستخدم كبديل عن كائن الملف المفتوح في النمط الثنائي للمعامل <code>name</code>، ويفترض أن يكون في الموقع <code>0</code>.
 
إن جرى تحديد قيمة للمعامل <code>fileobj</code> فإنها ستستخدم كبديل عن كائن الملف المفتوح في النمط الثنائي للمعامل <code>name</code>، ويفترض أن يكون في الموقع <code>0</code>.
  
 
يمكن أن يكون المعامل <code>fileobj</code> أي نوع من الكائنات التي تمتلك أحد التابعين <code>read()‎</code> أو <code>write()‎</code> (بالاعتماد على قيمة المعامل <code>mode</code> المستخدمة).
 
يمكن أن يكون المعامل <code>fileobj</code> أي نوع من الكائنات التي تمتلك أحد التابعين <code>read()‎</code> أو <code>write()‎</code> (بالاعتماد على قيمة المعامل <code>mode</code> المستخدمة).
=== <code>bufsize</code> ===
+
===<code>bufsize</code>===
 
+
يحدّد المعامل <code>bufsize</code> حجم الكتلة <code>blocksize</code> ويأخذ القيمة الافتراضية <code>‎20 *512‎</code> بايت.
يحدّد المعامل <code>bufsize</code> حجم الكتلة <code>blocksize</code> ويأخذ القيمة الافتراضية <code>‎20 *512‎</code> بايت. استخدم الصيغ المختلفة هذه مع <code>sys.stdin</code> مثلًا، أو مع كائن ملف منفذ socket file object أو مع مشغّل أشرطة tape device. ولكن تكون كائنات <code>[[Python/TarFile|TarFile]]</code> محدودة ولا تسمح بالوصول العشوائي. يوضّح الجدول التالي الأوضاع المتاحة في الوقت الحاضر:
+
===معاملات مفتاحية ‎**kwargs===
 
 
 
 
=== معاملات مفتاحية ‎**kwargs ===
 
 
 
 
عند استخدام الأوضاع ‎<code>'w:gz'</code>، <code>'r:gz'</code>، <code>'w:bz2'</code>، <code>'r:bz2'</code>، <code>'x:gz'</code>، <code>'x:bz2'</code>‎، تستقبل الدالة <code>tarfile.open()</code>‎ المعامل المفتاحي <code>compresslevel</code> (قيمته الافتراضية <code>9</code>) وذلك لتحديد مستوى الضغط للملف الحالي.
 
عند استخدام الأوضاع ‎<code>'w:gz'</code>، <code>'r:gz'</code>، <code>'w:bz2'</code>، <code>'r:bz2'</code>، <code>'x:gz'</code>، <code>'x:bz2'</code>‎، تستقبل الدالة <code>tarfile.open()</code>‎ المعامل المفتاحي <code>compresslevel</code> (قيمته الافتراضية <code>9</code>) وذلك لتحديد مستوى الضغط للملف الحالي.
== القيمة المعادة ==
+
==القيمة المعادة==
 
تعيد الدالة كائن <code>[[Python/TarFile|TarFile]]</code> للمسار المعطى.
 
تعيد الدالة كائن <code>[[Python/TarFile|TarFile]]</code> للمسار المعطى.
 
+
==أمثلة==
== أمثلة ==
+
يبين المثال التالي طريقة استخراج جميع الملفات الموجودة في أرشيف tar إلى المجلّد الحالي:<syntaxhighlight lang="python3">
 
 
يبين المثال التالي طريقة استخراج جميع الملفات الموجودة في أرشيف tar إلى المجلّد الحالي:
 
 
 
<syntaxhighlight lang="python3">
 
  
 
import tarfile
 
import tarfile
سطر 51: سطر 115:
  
 
</syntaxhighlight>
 
</syntaxhighlight>
 
+
==مصادر==
== مصادر ==
+
* <span> </span>[https://docs.python.org/3/library/tarfile.html#tarfile.open صفحة Read and write tar archive files في توثيق بايثون الرسمي.]
[https://docs.python.org/3/library/tarfile.html#tarfile.open صفحة Read and write tar archive files في توثيق بايثون الرسمي.]
 
 
 
 
[[تصنيف:Python]]
 
[[تصنيف:Python]]
 
[[تصنيف:Python Modules]]
 
[[تصنيف:Python Modules]]

المراجعة الحالية بتاريخ 06:53، 13 نوفمبر 2018

تفتح الدالة ملف tar المعطى وتعيد الدالة كائن TarFile للمسار المعطى. راجع قسم كائنات TarFile للاطلاع على المزيد من المعلومات حول هذه الكائنات والمعاملات المفتاحية المتاحة للاستخدام.

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

tarfile.open(name=None, mode='r', fileobj=None, bufsize=10240, **kwargs)

المعاملات

name

مسار ملف الأرشيف tar المراد فتحه.

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

mode

يجب أن يكون هذا المعامل سلسلة نصية بالصيغة ‎'filemode[:compression]'‎، ويأخذ القيمة الافتراضية 'r'. يعرض الجدول التالي قائمة كامل بالقيم المتاحة للاستخدام مع هذا المعامل:

الوضع الإجراء
‎'r'‎ أو ‎'r:*'‎ يُفتح الأرشيف للقراءة مع إجراء عملية ضغط غير محدّدة transparent compression (ينصح به).
'r:'‎ يُفتح الأرشيف للقراءة بشكل خاص exclusively دون إجراء عملية ضغط.
'r:gz'‎ يُفتح الأرشيف للقراءة مع الضغط بخوارزمية gzip.
'r:bz2'‎ يُفتح الأرشيف للقراءة مع الضغط بخوارزمية bzip2.
'r:xz'‎ يُفتح الأرشيف للقراءة مع الضغط بخوارزمية lzma.
‎'x'‎ أو ‎'x:'‎ تُنشئ الدالة ملف tar بشكل خاص دون إجراء عملية ضغط. تُطلق الدالة الاستثناء FileExistsError إن كان الملف موجودًا فعلًا.
'x:gz'‎ تُنشئ الدالة ملف tar مع الضغط بخوارزمية gzip. تُطلق الدالة الاستثناء FileExistsError إن كان الملف موجودًا فعلًا.
'x:bz2'‎ تُنشئ الدالة ملف tar مع الضغط بخوارزمية bzip2. تُطلق الدالة الاستثناء FileExistsError إن كان الملف موجودًا فعلًا.
'x:xz'‎ تُنشئ الدالة ملف tar مع الضغط بخوارزمية lzma. تُطلق الدالة الاستثناء FileExistsError إن كان الملف موجودًا فعلًا.
‎'a'‎ أو ‎'a:'‎ تفتح الدالة الملف في نمط الإلحاق appending دون إجراء عملية ضغط. تُنشئ الدالة الملف إن لم يكن موجودًا.
‎'w'‎ أو ‎'w:'‎ تفتح الدالة الملف للكتابة فيه دون إجراء عملية ضغط.
'w:gz'‎ تفتح الدالة الملف للكتابة فيه مع إلضغط بخورازمية gzip.
'w:bz2'‎ تفتح الدالة الملف للكتابة فيه مع إلضغط بخورازمية bzip2.
'w:xz'‎ تفتح الدالة الملف للكتابة فيه مع إلضغط بخورازمية lzma.

ملاحظة: في الإصدار 3.5 من بايثون أضيف الوضع 'x' (الإنشاء الخاص exclusive creation).

لاحظ أنّه ليس بالإمكان استخدام 'a:gz' أو 'a:bz2' أو 'a:xz'. إن كان الوضع mode غير مناسب لفتح ملف (مضغوط) معين للقراءة، تطلق الدالة الاستثناء ReadError، ويمكن تجنب ذلك باستخدام الوضع 'r'. أما إذا كانت طريقة الضغط غير مدعومة، فستطلق الدالة الاستثناء CompressionError.

هناك صيغة أخرى للمعامل mode وتستخدم لأغراض خاصة، وهذه الصيغة هي: ‎'filemode|[compression]'‎. ستعيد الدالة tarfile.open()‎ كائن TarFile يعالج بدوره بياناته كتدفق من الكتل stream of blocks، ولن تُجرى عمليات بحث عشوائية على الملف. يمكن استخدام هذه الصيغة مع sys.stdin مثلًا، أو مع كائن ملف مَنْفَذْ socket file object أو مع مشغّل أشرطة tape device. ولكن تكون كائنات TarFile محدودة ولا تسمح بالوصول العشوائي. يوضّح الجدول التالي الأوضاع المتاحة في الوقت الحاضر:

الوضع الحدث
'r|*'‎ تفتح الدالة تدفّقًا من كتل tar للقراءة مع إجراء عملية ضغط غير محدّدة transparent compression.
'r|'‎ تفتح الدالة تدفقًا من كتل tar غير المضغوطة للقراءة.
'r|gz'‎ تفتح الدالة تدفقًا من كتل tar المضغوطة بخوارزمية gzip للقراءة.
'r|bz2'‎ تفتح الدالة تدفقًا من كتل tar المضغوطة بخوارزمية bzip2 للقراءة.
'r|xz'‎ تفتح الدالة تدفقًا من كتل tar المضغوطة بخوارزمية lzma للقراءة.
'w|'‎ تفتح الدالة تدفقًا من كتل tar غير المضغوطة للكتابة.
'w|gz'‎ تفتح الدالة تدفقًا من كتل tar المضغوطة بخوارزمية gzip للكتابة.‎
'w|bz2'‎ تفتح الدالة تدفقًا من كتل tar المضغوطة بخوارزمية bzip2 للكتابة.
'w|xz'‎ تفتح الدالة تدفقًا من كتل tar المضغوطة بخوارزمية lzma للكتابة.

fileobj

إن جرى تحديد قيمة للمعامل fileobj فإنها ستستخدم كبديل عن كائن الملف المفتوح في النمط الثنائي للمعامل name، ويفترض أن يكون في الموقع 0.

يمكن أن يكون المعامل fileobj أي نوع من الكائنات التي تمتلك أحد التابعين read()‎ أو write()‎ (بالاعتماد على قيمة المعامل mode المستخدمة).

bufsize

يحدّد المعامل bufsize حجم الكتلة blocksize ويأخذ القيمة الافتراضية ‎20 *512‎ بايت.

معاملات مفتاحية ‎**kwargs

عند استخدام الأوضاع ‎'w:gz'، 'r:gz'، 'w:bz2'، 'r:bz2'، 'x:gz'، 'x:bz2'‎، تستقبل الدالة tarfile.open()‎ المعامل المفتاحي compresslevel (قيمته الافتراضية 9) وذلك لتحديد مستوى الضغط للملف الحالي.

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

تعيد الدالة كائن TarFile للمسار المعطى.

أمثلة

يبين المثال التالي طريقة استخراج جميع الملفات الموجودة في أرشيف tar إلى المجلّد الحالي:

import tarfile
tar = tarfile.open("sample.tar.gz")
tar.extractall()
tar.close()

مصادر