لغة البرمجة بايثون والتعامل مع نظام التشغيل من خلال مكتبة os

مكتبات لغة بايثون - التعامل مع الOS - بايثونات

مكتبات لغة بايثون :

لغة البرمجة بايثون تقدم العديد من المكتبات التي تُساعد المبرمجين على التعامل مع نظام التشغيل. من أشهر المكتبات التي تقدمها بايثون بشكل تلقائي هي مكتبة os التي تضم العديد من الدوال والوظائف المفيدة تحت هذا العنوان. تُقدم لكم بايثونات هذا المقال الذي يشرح بعض الامكانيات التي تتضمنها المكتبة.

لقد أصبحت لغة البرمجة بايثون أحد أشهر لغات البرمجة المُستخدمة في العديد من المجالات، مثل علم البيانات وتعليم الآلة، تحليل البيانات، برمجة الشبكات ومعالجة الصور والفيديو. تعمل لغة البايثون على مساعدة البرمجين والمستخدمين على الاستفادة من الوظائف والامكانات التي تقدمها انظمة التشغيل، حيث تحتوي المكتبة على الكثير من الدوال والوظائف التي تعتبر نسخة أخرى من وظائف ودوال تعمل على مستوى نظام التشغيل.
ولكن ماذا نستفيد من ذلك؟ يُمكننا القول ان الاستفادة من الامكانات الموجودة في نظام التشغيل داخل الشيفرات والبرمجيات التي نبنيها بلغة البايثون يُعطينا قوة وامكانية لبناء برامج وتطبيقات بايثون تسهل علينا الكثير من الامور وتحل لنا العديد من المشاكل. يُمكننا القيام بالكثير من المهام التي ننفذها على مستوى نظام التشغيل من خلال استخدام مكتبة os ومن امثلة هذه المهام ما يلي:
  • معرفة معلومات عن نظام التشغيل.
  • التعامل مع المجلدات من حيث الانشاء والنسخ والحذف.
  • التعامل مع الملفات في نظام التشغيل والتعديل عليها وانشائها.
  • التعامل مع متغيرات النظام ومعرفة معلومات عنها.

بالطبع لن نستطيع تغطية كُل شيء عن المكتبة في لغة البرمجة بايثون، ولكننا سنتطرق خلال هذا المقال الى بعض العناوين الهامة.

دوال مكتبة os في لغة البرمجة بايثون

حتى نستطيع ان نتعامل مع المكتبة يجب علينا في البداية استيرادها، ثم لمعرفة الدوال والوظائف التي يُمكننا ان نتعامل معها في المكتبة، سنستخدم جملة تكرار for loop لطباعة اسماء الدوال والخصائص الموجودة في المكتبة.

[pastacode lang=”python” manual=”import%20os%0A%0Afor%20attribute%20in%20dir(os)%3A%0A%20%20%20%20print(attribute)” message=”” highlight=”” provider=”manual”/]

من خلال الشيفرة السابقة، وبعد أن ننفذها في مُفسر لغة بايثون سنجد ان امامنا الكثير من الخصائص والوظائف الموجودة في المكتبة. من خلال هذا المقال سنركز على أهمها وأكثرها شيوعًا في الاستخدام.

معرفة نوع نظام التشغيل

تتضمن المكتبة خصائص ووظائف عديدة، أحد هذه الخصائص هي خاصية os.name التي من خلالها يُمكننا معرفة نوع نظام التشغيل هل هو Windows ام Linux ام غيره.

[pastacode lang=”python” manual=”import%20os%0A%0Aos_type%20%3D%20os.name%0A%0Aprint(os_type)” message=”” highlight=”” provider=”manual”/]

النتيجة اذا كانت nt فهذا يعني ان نظام التشغل الذي نُنفذ عليه الشيفرة البرمجية هو نظام Windows.

متغيرات نظام التشغيل

كل نظام تشغيل يتضمن ما يُسمى بمتغيرات النظام System Variables والتي تلخص معلومات هامة عن بيئة النظام وهيكليته وبعض البيانات الخاصة به. الخاصية os.environ تمنحنا معلومات متغيرات النظام. كل ما عليك فعله هو استيراد المكتبة واستخدام الخاصية بكل سهولة.

[pastacode lang=”python” manual=”import%20os%0A%0Aos_info%20%3D%20os.environ%0A%0Aprint(os_info)” message=”” highlight=”” provider=”manual”/]

النتيجة عبارة كائن من نوع فهرس. يُمكننا المرور على النتيجة وترتيبها بشكل أفضل من خلال جملة تكرار كما في يلي:

[pastacode lang=”python” manual=”import%20os%0A%0Aos_info%20%3D%20os.environ%0A%0Aprint(os_info)%0A%0Afor%20key%2Citem%20in%20os_info.items()%3A%0A%20%20%20%20print(key%2B’%3A%20’%2B%20item)” message=”” highlight=”” provider=”manual”/]

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

بما أن الخاصية os.environ هي عبارة عن فهرس، فهذا يعني انه يُمكننا استخدام دوال ووظائف الفهرس عليها. فمثلا يُمكننا الوصول مباشرة لقيمة متغير النظام NUMBER_OF_PROCESSORS والذي هو عبارة عن عدد وحدات المعالجة المركزية:

[pastacode lang=”python” manual=”print(os_info%5B%22NUMBER_OF_PROCESSORS%22%5D)” message=”” highlight=”” provider=”manual”/]

من الأفضل لنا عدم استخدام هذه الطريقة في الوصول المباشر لمتغيرات النظام الموجودة في الخاصية os.environ، حيث يُمكننا استخدام الدالة os.getenv والتي في حال استعلامنا عن متغير نظام غير موجود فإنها ترجع قيمة  None. في حالة استخدام طريقة الوصول عبر الفهرس، سيظهر لنا خطأ اذا كان متغير النظام غير موحود.

[pastacode lang=”python” manual=”os.getenv(%22NUMBER_OF_PROCESSORS%22)” message=”” highlight=”” provider=”manual”/]

تغيير مسار العمل

تقدم المكتبة دوال للتعامل مع مسار العمل الحالي Current Working Directory، وهذا يُعطينا ميزةً قوية وديناميكية عالية عند بناء برامج وتطبيقات بايثون. للتعرف على مسار العمل الحالي الذي يعمل فيه برنامج بايثون نستخدم دالة os.getcwd. في المقابل تُساعدنا دالة os.chdir في تغيير مسار العمل الحالي لبرنامج بايثون في جلسة العمل التي نعمل عليها.

[pastacode lang=”python” manual=”import%20os%0A%0Acurrent_working_dir%20%3D%20os.getcwd()%0Aprint(current_working_dir)%0A%0Aos.chdir(r%22path%2Fto%2Fyour%2Fnew%2Fdir%22)%0A%0Acurrent_working_dir%20%3D%20os.getcwd()%0Aprint(current_working_dir)” message=”” highlight=”” provider=”manual”/]

انشاء مجلدات

يُمكننا من خلال المكتبة ان ننشئ مجلد او مجلدات وذلك باستخدام دالتي os.mkdir و os.makedirs، ولكن ما الفرق بينهما؟
الدالة الأولى تعمل على انشاء مجلد واحد في مسار العمل الحالي، بينما تعمل الدالة الأولى على انشاء عدة مجلدات في مسار واحد.

[pastacode lang=”python” manual=”import%20os%0A%0Aos.mkdir(%22one_folder%22)%0A%0Aos.makedirs(%22folder1%2Ffolder2%2Ffolder3%22)” message=”” highlight=”” provider=”manual”/]

حذف الملفات والمجلدات

نستيطع استخدام الدالة os.remove لحذف ملف. سيظهر لك خطأ اذا لم يكن الملف موجودًا في المسار الحالي، وسيظهر لك خطأ اذا كان الملف قيد الاستخدام من قبل برنامج اخر او لم تكن تملك الصلاحيات اللازمة لحذف الملف. لحذف مجلد يُمكننا استخدام الدالة os.rmdir، وبنفس القيود، اذا لم يكن المجلد موجودًا سيظهر لك خطأ عند استدعاء الدالة. كذلك ينبغي ان يكون لديك صلاحية لحذف المجلد، ويجب ان يكون فارغًا قبل الحذف.

[pastacode lang=”python” manual=”import%20os%0A%0Aos.remove(%22file.txt%22)%0A%0Aos.rmdir(%22folder_one%22)%0A” message=”” highlight=”” provider=”manual”/]

اعادة تسمية الملفات والمجلدات

بالتأكيد إن خاصية اعادة التسمية للملفات والمجلدات ستكون متاحة بكل سهولة في مكتبة os. لاعادة تسمية ملف موجود باسم file.txt الى new_file.txt في المسار الحالي للعمل نستخدم لذلك الدالة os.rename بالطريقة التالية:

[pastacode lang=”python” manual=”import%20os%0A%0Aos.rename(%22file.txt%22%2C%20%22new_file.txt%22)” message=”” highlight=”” provider=”manual”/]

فتح ملف

تُمكننا المكتبة من تشغيل ملف وكأننا ضغطنا عليه مرتين بشكل سريع بالفأرة. سيعمل برنامج البايثون بمحاكاة الضغط مرتين على الملف لتشغيله بالبرنامج المقترن به. يُمكننا من خلال هذا الامر ان نُشغل ملفات pdf او mp3 او فتح الصور والملفات النصية بكل سهولة.

[pastacode lang=”python” manual=”import%20os%0A%0Aos.startfile(%22file.txt%22)” message=”” highlight=”” provider=”manual”/]

الوحدة الفرعية os.path في لغة البرمجة بايثون

تُعد الوحدة الفرعية path في المكتبة ذات دور كبير في تسهيل التعامل مع الملفات على مستوى نظام التشغيل في لغة البرمجة بايثون. تقدم الوحدة العديد من الامكانات الرائعة. أول الدوال التي سنذكرها هنا هي دالتي os.path.basename و os.path.dirname.

الدالة os.path.basename تُرجع اسم الملف من مسار معين. لو افترضنا اننا نريد الحصول على اسم الملف من المسار c:\users\ielbouhissi\desktop\file.txt سنمرر المسار للدالة وستكون النتيجة هي file.txt.

[pastacode lang=”python” manual=”import%20os%0A%0Amy_path%3D%20r%22c%3A%5Cusers%5Cielbouhissi%5Cdesktop%5Cfile.txt%22%0A%0Afile_name%20%3D%20os.path.basename(my_path)%0A%0Aprint(file_name)” message=”” highlight=”” provider=”manual”/]

تعمل الدالة os.path.dirname بشكل مغاير عن الدالة الأخرى، حيث تُرجع لنا المسار بدون اسم الملف. باستخدام المسار السابق، ستكون النتيحة عند استخدام هذه الدالة هي c:\users\ielbouhissi\desktop.

[pastacode lang=”python” manual=”import%20os%0A%0Amy_path%20%3D%20r%22c%3A%5Cusers%5Cielbouhissi%5Cdesktop%5Cfile.txt%22%0A%0Adirectory%20%3D%20os.path.basename(my_path)%0A%0Aprint(directory%20)” message=”” highlight=”” provider=”manual”/]

التأكد من وجود مسار معين

في كثير من الأحيان نحتاج ان نتأكد من وجود مسار معين قبل البدء بالتعامل معه في الشيفرة البرمجية. تقدم لغة البرمجة بايثون هذه الامكانية من خلال وحدة os.path من خلال الدالة exists. ترجع الدالة قيمة منطقية True اذا كان المسار الذي مررناه لها موجودٌ فعليًا، وتُرجع القيمة False اذا لم يكن موجودًا.

[pastacode lang=”python” manual=”import%20os%0A%0Amy_path%20%3D%20r%22c%3A%5Cusers%5Cielbouhissi%5Cdesktop%5Cfile.txt%22%0A%0Aprint(os.path.exists(my_path))” message=”” highlight=”” provider=”manual”/]

كيف تعرف انك تتعامل مع ملف ام مجلد؟

نستطيع من خلال الدوال os.path.isdir و os.path.isfile ان نتأكد من المسار المُرر لهما اذا كان مجلد ام ملف.  اذا اردت ان تتأكد من وجود المسار بغض النظر اذا كان ملف ام مجلد فعليك باستخدام الدالة exists السابقة. اما اذا اردت ان تعرف هل هو ملف ام مجلد فعليك باستخدام احد الدالتين حسب الحاجة.

[pastacode lang=”python” manual=”import%20os%0A%0A%23%D8%B3%D8%AA%D8%B1%D8%AC%D8%B9%20%D9%81%D9%8A%20%D9%87%D8%B0%D9%87%20%D8%A7%D9%84%D8%AD%D8%A7%D9%84%D8%A9%20%D9%82%D9%8A%D9%85%D8%A9%20%D9%85%D9%86%D8%B7%D9%82%D9%8A%D8%A9%20%D8%B5%D8%AD%D9%8A%D8%AD%D8%A9%20%D9%84%D8%A7%D9%86%20%D9%85%D8%B1%D8%B1%D9%86%D8%A7%20%D9%84%D9%87%20%D9%85%D8%B3%D8%A7%D8%B1%20%D9%85%D9%84%D9%81%0Aresult%20%3D%20os.path.isfile(r%22c%3A%5Cusers%5Cielbouhissi%5Cdesktop%5Cfile.txt%22)%0Aprint(result)%0A%0A%23%D8%B3%D8%AA%D8%B1%D8%AC%D8%B9%20%D9%81%D9%8A%20%D9%87%D8%B0%D9%87%20%D8%A7%D9%84%D8%AD%D8%A7%D9%84%D8%A9%20%D9%82%D9%8A%D9%85%D8%A9%20%D9%85%D9%86%D8%B7%D9%82%D9%8A%D8%A9%20%D8%AE%D8%A7%D8%B7%D8%A6%D8%A9%20%D9%84%D8%A7%D9%86%20%D8%A7%D9%84%D9%85%D8%B3%D8%A7%D8%B1%20%D8%A7%D9%84%D8%B0%D9%8A%20%D9%85%D8%B1%D8%B1%D9%86%D8%A7%D9%87%20%D9%85%D8%AC%D9%84%D8%AF%20%D9%88%D9%84%D9%8A%D8%B3%20%D9%85%D9%84%D9%81%0Aresult%20%3D%20os.path.isfile(r%22c%3A%5Cusers%5Cielbouhissi%5Cdesktop%22)%0Aprint(result)%0A%0A%23%D8%B3%D8%AA%D8%B1%D8%AC%D8%B9%20%D9%81%D9%8A%20%D9%87%D8%B0%D9%87%20%D8%A7%D9%84%D8%AD%D8%A7%D9%84%D8%A9%20%D9%82%D9%8A%D9%85%D8%A9%20%D9%85%D9%86%D8%B7%D9%82%D9%8A%D8%A9%20%D8%AE%D8%A7%D8%B7%D8%A6%D8%A9%20%D9%84%D8%A7%D9%86%20%D8%A7%D9%84%D9%85%D8%B3%D8%A7%D8%B1%20%D8%A7%D9%84%D8%B0%D9%8A%20%D9%85%D8%B1%D8%B1%D9%86%D8%A7%D9%87%20%D9%85%D8%AC%D9%84%D8%AF%20%D9%88%D9%84%D9%8A%D8%B3%20%D9%85%D9%84%D9%81%0Aresult%20%3D%20os.path.isdir(r%22c%3A%5Cusers%5Cielbouhissi%5Cdesktop%5Cfile.txt%22)%0Aprint(result)%0A%0A%23%D8%B3%D8%AA%D8%B1%D8%AC%D8%B9%20%D9%81%D9%8A%20%D9%87%D8%B0%D9%87%20%D8%A7%D9%84%D8%AD%D8%A7%D9%84%D8%A9%20%D9%82%D9%8A%D9%85%D8%A9%20%D9%85%D9%86%D8%B7%D9%82%D9%8A%D8%A9%20%D8%B5%D8%AD%D9%8A%D8%AD%D8%A9%20%D9%84%D8%A7%D9%86%20%D9%85%D8%B1%D8%B1%D9%86%D8%A7%20%D9%84%D9%87%20%D9%85%D8%B3%D8%A7%D8%B1%20%D9%85%D8%AC%D9%84%D8%AF%0Aresult%20%3D%20os.path.isdir(r%22c%3A%5Cusers%5Cielbouhissi%5Cdesktop%22)%0Aprint(result)%0A” message=”” highlight=”” provider=”manual”/]

فصل اسم الملف عن المسار

في بعض الأحيان نحتاج ان نفصل اسم المسار عن اسم الملف. لعمل ذلك نستخدم الدالة os.path.split، وستكون النتيجة عبارة عن Tuple يحتوي على عنصرين، الاول هو المسار والثاني هو اسم الملف.

[pastacode lang=”python” manual=”import%20os%0A%0Aresult%20%3D%20os.path.split(r%22c%3A%5Cusers%5Cielbouhissi%5Cdesktop%5Cfile.txt%22)%0A%0Aprint(result)%0A%0A%23%D8%B3%D8%AA%D9%83%D9%88%D9%86%20%D8%A7%D9%84%D9%86%D8%AA%D9%8A%D8%AC%D8%A9%0A%23%20(‘c%3A%5C%5Cusers%5C%5Cielbouhissi%5C%5Cdesktop’%2C%20’file.txt’)” message=”” highlight=”” provider=”manual”/]

في الختام، قدمنا لكم في هذا المقال شرحًا موجزًا عن المكتبة المعيارية os في لغة البرمجة بايثون والتي تقدم العديد من الخصاص والدوال التي تُساعد في التعامل مع الملفات والحصول على بعض معلومات نظام التشغيل.

 

 

مقالات مشابهة

  • تطبيقات لغة بايثون في إنترنت الأشياء

    تطبيقات لغة بايثون في إنترنت الأشياء

    تطبيقات لغة بايثون في إنترنت الأشياء من المواضيع التي يزداد البحث عنها خلال الوقت
    ابراهيم البحيصي
    By ابراهيم البحيصي
    تعرف على المزيد
  • مكاتب بايثون Playwright لأتمتة الصفحات - بايثونات

    مكتبة Playwright – بديل مايكروسوفت لأتمتة متصفحات الإنترنت

    مكاتب بايثون Playwright لأتمتة الصفحات : مكاتب بايثون بلايورايت : تنوعت أنشطة مايكروسوفت مؤخرًا
    Naser Alostath
    By Naser Alostath
    تعرف على المزيد
  • تصميم قواعد بيانات اوراكل عملي بإستخدام البايثون - بايثونات

    قواعد البيانات الأوراكل والبايثون –كيف نتعامل مع الاوراكل من كود بايثون

    قواعد البيانات الأوراكل هي أحد أقوى قواعد البيانات، وتعتمد عليها الكثير من الشركات عالميًا.
    ابراهيم البحيصي
    By ابراهيم البحيصي
    تعرف على المزيد
  • مكتبة requests بايثون - بايثونات

    مكتبة requests في البايثون – كيف تُرسل طلبات HTTP من بايثون

    مكتبة requests في البايثون هي أحد أشهر المكتبات التي تُستخدم في العديد من المشاريع
    ابراهيم البحيصي
    By ابراهيم البحيصي
    تعرف على المزيد

One Comment

Comments are closed.