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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
ط
 
(11 مراجعة متوسطة بواسطة مستخدم واحد آخر غير معروضة)
سطر 1: سطر 1:
 
=  pathlib — وحدة مسارات نظام الملفات كائنية التوجه=
 
=  pathlib — وحدة مسارات نظام الملفات كائنية التوجه=
أُضيفت هذه الوحدة إلى بايثون في النسخة 3.4 وتقدم هذه الوحدة أصنافًا تمثّل مسارات نظام التشغيل مع دلالات ملائمة لمختلف أنظمة التشغيل. تنقسم أصناف المسارات إلى نوعين:
+
تقدم هذه الوحدة أصنافًا تمثّل مسارات نظام التشغيل مع دلالات ملائمة لمختلف [https://academy.hsoub.com/apps/operating-systems/%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84/ أنظمة التشغيل]، وقد أُضيفت هذه الوحدة إلى بايثون في النسخة 3.4.
===صنف المسارات النقية <code>PurePath</code>===
 
يقدم هذا الصنف عمليات لحساب المسارات دون أي عمليات إدخال أو إخراج، أي أنه لا يتم الوصول الفعلي إلى نظام الملفات أبدًا. وتوجد ثلاث طرائق للوصول إلى هذه الأصناف، ونسمي هذه الطرائق بالنكهات، ونوجزها فيما يلي:
 
  
1- <code>PurePath</code> هو صنف عام يمثل نكهة مسار النظام (حيث يُنشأ كائن من نوع <code>PurePosixPath</code> أو <code>PureWindowsPath</code> عند إنشاء كائن منه)
+
تحتوي هذه الوحدة على صنفين يسمحان بالتعامل مع المسارات، أحدهما للتعامل مع المسارات بشكلها النصي <code>PurePath</code> والآخر  للقيام بعمليات الدخل والخرج على الملفات والمجلدات التي تشير إليها المسارات.
 +
==[[Python/pathlib/PurePath|صنف المسارات النقية <code>PurePath</code>]]==
 +
يقدم هذا الصنف عمليات نصّية على المسارات دون أي عمليات إدخال أو إخراج، أي أنه لا يتم الوصول الفعلي إلى نظام الملفات أبدًا ولا يُشترط أن يكون المسار مشيرًا إلى ملفات حقيقية أصلًا.
  
2- <code>PurePosixPath</code>هو الصنف الفرعي من الصنف <code>PurePath</code> الذي يمثل مسارات نظام الملفات في الأنظمة المغايرة لويندوز
+
توجد ثلاث طرائق للوصول إلى هذه الأصناف، ونسمي هذه الطرائق بالنكهات، ونوجزها فيما يلي:
  
3- <code>PureWindowsPath</code> هو الصنف الفرعي من الصنف <code>PurePath</code> الذي يمثل مسارات نظام الملفات في ويندوز
+
1- <code>[[Python/pathlib/PurePath|PurePath]]</code> هو صنف عام يمثل نكهة مسار النظام الذي يتم العمل عليه(حيث يُنشأ كائن من نوع <code>[[Python/pathlib/PurePosixPath|PurePosixPath]]</code> أو <code>[[Python/pathlib/PureWindowsPath|PureWindowsPath]]</code> عند إنشاء كائن منه حسب نظام التشغيل المُفسّر للشيفرة) ذلك يكون حسب قيمة المتغير [[Python/os/name|os.name]] كما هو واضح من [https://github.com/python/cpython/blob/3.7/Lib/pathlib.py الشيفرة البرمجية للوحدة].
  
=== صنف المسارات الصلبة <code>Path</code> ===
+
2- <code>[[Python/pathlib/PurePosixPath|PurePosixPath]]</code> هو الصنف الفرعي من الصنف <code>[[Python/pathlib/PurePath|PurePath]]</code> الذي يمثل مسارات نظام الملفات في الأنظمة المغايرة لويندوز.
يرث هذا الصنف من الصنف <code>PurePaths</code>  ولكن مع تقديمه لعمليات الإدخال والإخراج، أي أن الكائنات المنشأة منه قادرة على الوصول الفعلي لملفات النظام والتعديل عليها، ويمكن إنشاء كائنات من هذا الصنف بثلاث طرق (نكهات مختلفة)، نوجزها فيما يلي:
 
  
1- <code>Path</code> هو الصنف العام، يُنشأ كائن من أحد الصنفين <code>PosixPath</code>  أو <code>WindowsPath</code> عند إنشاء كائن منه.
+
3- <code>[[Python/pathlib/PureWindowsPath|PureWindowsPath]]</code> هو الصنف الفرعي من الصنف <code>[[Python/pathlib/PurePath|PurePath]]</code> الذي يمثل مسارات نظام الملفات في ويندوز.
  
2-<code>PosixPath</code> هو الصنف فرعي الذي يمثل المسارات الصلبة لمسارات أنظمة الملفات المغايرة لنظام ويندوز.
+
تسمح المسارات النقية بإنشاء كائنات من أحد الصنفين على كلي أنظمة التشغيل ويندوز و POSIX وذلك لأن جميع التوابع الخاصة بهذا النوع من الأصناف (المسارات النقية) هي توابع للتعامل النصي فقط مع المسارات.
 +
==[[Python/pathlib/Path|صنف المسارات الصلبة <code>Path</code>]]==
 +
يرث هذا الصنف من الصنف <code>[[Python/pathlib/PurePath|PurePath]]</code>  ولكن مع تقديمه لعمليات الإدخال والإخراج، أي أن الكائنات المنشأة منه قادرة على الوصول الفعلي لملفات النظام والتعديل عليها، ويمكن إنشاء كائنات من هذا الصنف بثلاث طرق (نكهات مختلفة)، نوجزها فيما يلي:
  
3-<code>WindowsPath</code> هو الصنف الفرعي الذي يمثل المسارات الصلبة لمسارات أنظمة ملفات ويندوز.
+
1- <code>[[Python/pathlib/Path|Path]]</code> هو الصنف العام، يُنشأ كائن من أحد الصنفين <code>[[Python/pathlib/PosixPath|PosixPath]]</code>  أو <code>[[Python/pathlib/WindowsPath|WindowsPath]]</code> عند إنشاء كائن منه.
  
=== ملاحظة بخصوص الاستخدام لأول مرة ===
+
2-<code>[[Python/pathlib/PosixPath|PosixPath]]</code> هو الصنف فرعي الذي يمثل المسارات الصلبة لمسارات أنظمة الملفات المغايرة لنظام ويندوز، ولا يُسمح بإنشاء كائنات منه في نظام ويندوز.
إن لم تكن قد استخدمت هذه الوحدة من قبل أو أنك غير متأكد أي صنف عليك أن تستخدم لأداء مهمة ما، فعلى الأغلب عليك استخدام الصنف <code>Path</code> الذي يتولد (instantiates) من صنف المسارات الصلبة بما يلائم المنصة التي تُفسّر فيها الشيفرة البرمجية.
 
{| class="wikitable"
 
|'''انظر أيضًا'''
 
للقيام بمعالجة منخفضة المستوى للمسارات على السلاسل النصية، يمكنك أيضًا استخدام الوحدة os.path
 
|}
 
===التقابل مع الوحدة os===
 
يبيّن الجدول التالي تقابل عدة توابع من الوحدة os  مع ما يقابلها و يكافئها من الوحدة PurePath و Path.
 
{| class="wikitable"
 
!الوحدة os والوحدة os.path
 
!الوحدة pathlib
 
|-
 
|os.path.abspath()
 
|Path.resolve()
 
|-
 
|os.getcwd()
 
|Path.cwd()
 
|-
 
|os.path.exists()
 
|Path.exists()
 
|-
 
|os.path.expanduser()
 
|Path.expanduser() و Path.home()
 
|-
 
|os.path.isdir()
 
|Path.is_dir()
 
|-
 
|os.path.isfile()
 
|Path.is_file()
 
|-
 
|os.path.islink()
 
|Path.is_symlink()
 
|-
 
|os.stat()
 
|Path.stat(),Path.owner(), Path.group()
 
|-
 
|os.path.isabs()
 
|PurePath.is_absolute()
 
|-
 
|os.path.join()
 
|PurePath.joinpath()
 
|-
 
|os.path.basename()
 
|PurePath.name
 
|-
 
|os.path.dirname()
 
|PurePath.parent
 
|-
 
|os.path.splitext()
 
|PurePath.suffix
 
|}
 
ملاحظة:
 
  
بالرغم من وجود بعض التقاطع في حالات استخدام التابعين os.path.relpath‎‎()‎ والتابع PurePath.relative_to()‎ إلا أن مدلول كل منهما مختلف بما يدعو لعدم اعتبارهما متكافئين.
+
3-<code>[[Python/pathlib/WindowsPath|WindowsPath]]</code> هو الصنف الفرعي الذي يمثل المسارات الصلبة لمسارات أنظمة ملفات ويندوز، ولا يٌسمح بإنشاء كائنات منه في الأنظمة المغايرة لويندوز.
 +
 
 +
يُمثل الشكل التالي هيكلية الوراثة بين هذه الأصناف الثلاثة:
 +
 
 +
[[ملف:pathlib-inheritance.png|بديل=صورة توضح طريقة الوراثة بين الأصناف في وحدة pathlib|حدود|وسط|800x800بك|طريقة الوراثة بين الأصناف في وحدة pathlib|وصلة=https://wiki.hsoub.com/%D9%85%D9%84%D9%81:pathlib-inheritance.png]]
 +
==ملاحظة بخصوص الاستخدام لأول مرة==
 +
إن لم تكن قد استخدمت هذه الوحدة من قبل أو أنك غير متأكد أي صنف عليك أن تستخدم لأداء مهمة ما، فعلى الأغلب عليك استخدام الصنف <code>[[Python/pathlib/Path|Path]]</code> الذي يتولد (instantiates) من صنف المسارات الصلبة بما يلائم المنصة التي تُفسّر فيها الشيفرة البرمجية.
 +
 
 +
== انظر أيضًا ==
 +
إذا أردت تجربة هذا الصنف في نظام يونكس، فيمكنك استخدام المحاكي من [https://repl.it/repls/SnappyZigzagPrintablecharacter موقع Repl.it] أو المحاكي الخاص بموقع tutorialspoint.
 +
 
 +
<nowiki>https://www.tutorialspoint.com/online_python_ide.php</nowiki>
 +
 
 +
== مصادر ==
 +
[https://docs.python.org/3/library/pathlib.html#pathlib.PurePath.suffix صفحة التوثيق الرسمي لمكتبة pathlib وفي وثائق بايثون.]

المراجعة الحالية بتاريخ 16:42، 18 يوليو 2023

  pathlib — وحدة مسارات نظام الملفات كائنية التوجه

تقدم هذه الوحدة أصنافًا تمثّل مسارات نظام التشغيل مع دلالات ملائمة لمختلف أنظمة التشغيل، وقد أُضيفت هذه الوحدة إلى بايثون في النسخة 3.4.

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

صنف المسارات النقية PurePath

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

توجد ثلاث طرائق للوصول إلى هذه الأصناف، ونسمي هذه الطرائق بالنكهات، ونوجزها فيما يلي:

1- PurePath هو صنف عام يمثل نكهة مسار النظام الذي يتم العمل عليه(حيث يُنشأ كائن من نوع PurePosixPath أو PureWindowsPath عند إنشاء كائن منه حسب نظام التشغيل المُفسّر للشيفرة) ذلك يكون حسب قيمة المتغير os.name كما هو واضح من الشيفرة البرمجية للوحدة.

2- PurePosixPath هو الصنف الفرعي من الصنف PurePath الذي يمثل مسارات نظام الملفات في الأنظمة المغايرة لويندوز.

3- PureWindowsPath هو الصنف الفرعي من الصنف PurePath الذي يمثل مسارات نظام الملفات في ويندوز.

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

صنف المسارات الصلبة Path

يرث هذا الصنف من الصنف PurePath  ولكن مع تقديمه لعمليات الإدخال والإخراج، أي أن الكائنات المنشأة منه قادرة على الوصول الفعلي لملفات النظام والتعديل عليها، ويمكن إنشاء كائنات من هذا الصنف بثلاث طرق (نكهات مختلفة)، نوجزها فيما يلي:

1- Path هو الصنف العام، يُنشأ كائن من أحد الصنفين PosixPath  أو WindowsPath عند إنشاء كائن منه.

2-PosixPath هو الصنف فرعي الذي يمثل المسارات الصلبة لمسارات أنظمة الملفات المغايرة لنظام ويندوز، ولا يُسمح بإنشاء كائنات منه في نظام ويندوز.

3-WindowsPath هو الصنف الفرعي الذي يمثل المسارات الصلبة لمسارات أنظمة ملفات ويندوز، ولا يٌسمح بإنشاء كائنات منه في الأنظمة المغايرة لويندوز.

يُمثل الشكل التالي هيكلية الوراثة بين هذه الأصناف الثلاثة:

صورة توضح طريقة الوراثة بين الأصناف في وحدة pathlib

ملاحظة بخصوص الاستخدام لأول مرة

إن لم تكن قد استخدمت هذه الوحدة من قبل أو أنك غير متأكد أي صنف عليك أن تستخدم لأداء مهمة ما، فعلى الأغلب عليك استخدام الصنف Path الذي يتولد (instantiates) من صنف المسارات الصلبة بما يلائم المنصة التي تُفسّر فيها الشيفرة البرمجية.

انظر أيضًا

إذا أردت تجربة هذا الصنف في نظام يونكس، فيمكنك استخدام المحاكي من موقع Repl.it أو المحاكي الخاص بموقع tutorialspoint.

https://www.tutorialspoint.com/online_python_ide.php

مصادر

صفحة التوثيق الرسمي لمكتبة pathlib وفي وثائق بايثون.