لغة البرمجة بايثون والتعامل مع نظام التشغيل من خلال مكتبة 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”/]
[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”/]
انشاء مجلدات
[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 في لغة البرمجة بايثون والتي تقدم العديد من الخصاص والدوال التي تُساعد في التعامل مع الملفات والحصول على بعض معلومات نظام التشغيل.
بايثونات الموقع رقم 1 في العالم العربي، اتقدم بجزيل الشكر