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

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

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

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

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

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

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

import os

for attribute in dir(os):
    print(attribute)

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

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

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

import os

os_type = os.name

print(os_type)

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

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

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

import os

os_info = os.environ

print(os_info)

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

import os

os_info = os.environ

print(os_info)

for key,item in os_info.items():
    print(key+': '+ item)

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

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

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

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

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

import os

current_working_dir = os.getcwd()
print(current_working_dir)

os.chdir(r"path/to/your/new/dir")

current_working_dir = os.getcwd()
print(current_working_dir)

انشاء مجلدات

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

os.mkdir("one_folder")

os.makedirs("folder1/folder2/folder3")

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

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

import os

os.remove("file.txt")

os.rmdir("folder_one")

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

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

import os

os.rename("file.txt", "new_file.txt")

فتح ملف

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

import os

os.startfile("file.txt")

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

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

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

import os

my_path= r"c:\users\ielbouhissi\desktop\file.txt"

file_name = os.path.basename(my_path)

print(file_name)

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

import os

my_path = r"c:\users\ielbouhissi\desktop\file.txt"

directory = os.path.basename(my_path)

print(directory )

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

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

import os

my_path = r"c:\users\ielbouhissi\desktop\file.txt"

print(os.path.exists(my_path))

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

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

import os

#سترجع في هذه الحالة قيمة منطقية صحيحة لان مررنا له مسار ملف
result = os.path.isfile(r"c:\users\ielbouhissi\desktop\file.txt")
print(result)

#سترجع في هذه الحالة قيمة منطقية خاطئة لان المسار الذي مررناه مجلد وليس ملف
result = os.path.isfile(r"c:\users\ielbouhissi\desktop")
print(result)

#سترجع في هذه الحالة قيمة منطقية خاطئة لان المسار الذي مررناه مجلد وليس ملف
result = os.path.isdir(r"c:\users\ielbouhissi\desktop\file.txt")
print(result)

#سترجع في هذه الحالة قيمة منطقية صحيحة لان مررنا له مسار مجلد
result = os.path.isdir(r"c:\users\ielbouhissi\desktop")
print(result)

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

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

import os

result = os.path.split(r"c:\users\ielbouhissi\desktop\file.txt")

print(result)

#ستكون النتيجة
# ('c:\\users\\ielbouhissi\\desktop', 'file.txt')

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

 

 

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *