أشهر مكتبات بايثون المستخدمة في أتمتة المهام اليومية

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

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

في هذا المقال، نستعرض أشهر مكتبات بايثون المستخدمة في أتمتة المهام اليومية، مع شرح بسيط لوظيفة كل مكتبة وكيف يمكن استخدامها في سيناريوهات عملية.

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

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

  • os.listdir(path) لاستعراض محتويات مجلد.

  • os.makedirs(path) لإنشاء مجلدات متداخلة.

  • os.remove(filename) لحذف ملف.

  • os.rename(src, dst) لإعادة تسمية ملف أو نقله.

  • os.system(command) لتنفيذ أمر نظام تشغيل مثل "ping google.com".

استخدام os يوفّر مرونة في بناء سكريبتات تتفاعل مباشرة مع بنية الملفات والمجلدات على الجهاز، وهي أساسية في أي سيناريو أتمتة يتطلب مراقبة ملفات أو التعديل عليها.

مكتبات بايثون التي تُستخدم في التعامل مع نظام التشغيل وتنفيذ الأوامر والجدولة الزمنية تُشكّل حجر الأساس لأي عملية أتمتة. وفيما يلي تفصيل لأشهر هذه المكتبات ووظيفة كلٍ منها:

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

  • استعراض الملفات: os.listdir('.')

  • إنشاء مجلد: os.mkdir('new_folder')

  • حذف ملف: os.remove('file.txt')

  • تغيير المسار الحالي: os.chdir('/path/to/folder')

  • قراءة متغيرات البيئة: os.environ.get('HOME')

هي مكتبة ضرورية لأي عملية أتمتة تتطلب التعامل المباشر مع الملفات أو البنية الهيكلية للنظام.

2. مكتبة shutil: النسخ والنقل والحذف والضغط
إذا كنت تحتاج إلى نسخ الملفات أو نقلها من مكان إلى آخر، أو حتى إنشاء نسخ مضغوطة منها، فإن shutil هي المكتبة الأنسب. بخلاف os التي تتعامل مع المفاهيم العامة للملفات والمجلدات، فإن shutil تركز على العمليات الفعلية على الملفات.

  • نسخ ملف: shutil.copy('source.txt', 'destination.txt')

  • نقل ملف: shutil.move('old.txt', 'new_folder/new.txt')

  • حذف مجلد بالكامل: shutil.rmtree('folder')

  • إنشاء نسخة مضغوطة: shutil.make_archive('backup', 'zip', 'folder_to_zip')

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

3. مكتبة subprocess: تنفيذ أوامر النظام والتحكم في العمليات
بينما تتيح مكتبة os تنفيذ أوامر بسيطة عبر os.system()، فإن subprocess توفر تحكمًا أدق وأكثر أمانًا في تشغيل أوامر النظام. يمكن استخدامها للحصول على مخرجات الأوامر، التعامل مع الأخطاء، التحكم في الإدخال والإخراج القياسي، وحتى تنفيذ سلاسل من العمليات.

من أشهر استخداماتها:

  • تنفيذ أمر والحصول على مخرجه كنص:

    import subprocess
    result = subprocess.run(['ls', '-l'], capture_output=True, text=True)
    print(result.stdout)
    
  • تنفيذ أمر يتطلب إدخال من المستخدم:

    subprocess.run(['sudo', 'apt', 'update'])
    
  • التعامل مع أخطاء التنفيذ:

    result = subprocess.run(['cat', 'nofile.txt'], capture_output=True, text=True)
    print(result.stderr)  # يحتوي على رسالة الخطأ
    

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

4. مكتبة schedule: جدولة المهام الزمنية
عندما تحتاج إلى تنفيذ مهمة بشكل دوري (مثلًا: إرسال تقرير كل يوم الساعة 9 صباحًا)، فإن مكتبة schedule توفر طريقة بسيطة جدًا لذلك بدون الحاجة إلى التعامل مع أدوات خارجية مثل cron أو Task Scheduler.

مثال على تنفيذ مهمة كل ساعة:

import schedule
import time

def job():
    print("تنفيذ المهمة")

schedule.every().hour.do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

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

5. مكتبة time و datetime: التحكم في الوقت والتاريخ والتأخير
هتان المكتبتان مدمجتان في بايثون، وتُستخدمان بشكل واسع في عمليات الأتمتة التي تعتمد على التأخير المؤقت، أو تنفيذ مهام بناءً على وقت وتاريخ معين.

مكتبة time:
تُستخدم غالبًا لإضافة تأخير بين العمليات أو للحصول على الوقت الحالي بوحدة الثواني.

  • تأخير تنفيذ: time.sleep(5) — إيقاف الكود لمدة 5 ثوانٍ.

  • الوقت الحالي (بالثواني منذ 1970): time.time()

  • تنسيق الوقت: time.strftime("%Y-%m-%d %H:%M:%S")

مكتبة datetime:
توفر إمكانيات أكثر تقدمًا للتعامل مع التواريخ والأوقات، مثل مقارنة التواريخ، إضافة أيام أو ساعات، أو تحديد اليوم الحالي بدقة.

  • التاريخ والوقت الحالي: datetime.datetime.now()

  • إنشاء كائن تاريخ مخصص:

    from datetime import datetime
    date_obj = datetime(2025, 6, 30, 10, 0)
    
  • الفرق بين تاريخين:

    from datetime import datetime, timedelta
    delta = datetime.now() - datetime(2025, 6, 1)
    print(delta.days)
    

هاتان المكتبتان أساسيتان عندما ترغب في تنفيذ عمليات مشروطة بالتاريخ أو الوقت، مثل تأخير إرسال طلب HTTP، أو التحقق من مرور عدد معين من الأيام منذ آخر تنفيذ، أو حتى تسمية الملفات بتاريخ اليوم تلقائيًا.

6. مكتبة pyautogui: أتمتة التفاعل مع الواجهات الرسومية (الماوس ولوحة المفاتيح)
pyautogui تُستخدم لأتمتة التفاعل اليدوي مع التطبيقات الرسومية، مثل النقر على الأزرار، كتابة النصوص، التقاط الشاشة، أو سحب الملفات. وهي من أقوى الأدوات عندما لا تكون هناك واجهة برمجية (API) للتطبيق، وتضطر للتعامل مع الواجهة كما يفعل المستخدم.

أمثلة على ما يمكن فعله بـ pyautogui:

  • تحريك الماوس إلى موقع معين:

    import pyautogui
    pyautogui.moveTo(100, 200)
    
  • النقر على نقطة معينة في الشاشة:

    pyautogui.click(500, 400)
    
  • كتابة نص في حقل إدخال:

    pyautogui.write("Hello, this is automated!", interval=0.1)
    
  • الضغط على مفاتيح معينة مثل Enter أو Ctrl+C:

    pyautogui.press('enter')
    pyautogui.hotkey('ctrl', 'c')
    
  • أخذ لقطة شاشة:

    screenshot = pyautogui.screenshot()
    screenshot.save("screen.png")
    

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

7. مكتبة selenium: أتمتة تصفح الويب والتفاعل مع صفحات الإنترنت
selenium تُستخدم عندما تحتاج إلى فتح مواقع إلكترونية والتفاعل معها كما يفعل المستخدم، مثل تسجيل الدخول، تعبئة النماذج، الضغط على الأزرار، وحتى تحميل الملفات أو استخراج معلومات من مواقع لا توفر واجهات برمجية (API).

تدعم selenium متصفحات متعددة مثل Chrome وFirefox وEdge، ويمكن تشغيلها بوضع مرئي أو "رأسية" (headless) بدون واجهة رسومية.

مثال بسيط على فتح موقع وتعبئة نموذج:

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("https://example.com/login")

driver.find_element(By.NAME, "username").send_keys("your_username")
driver.find_element(By.NAME, "password").send_keys("your_password")
driver.find_element(By.ID, "submit").click()

ما يمكن تنفيذه باستخدام selenium:

  • تسجيل الدخول إلى مواقع محددة تلقائيًا.

  • التنقل بين الصفحات وجمع البيانات.

  • اختبار واجهات المستخدم لتطبيقات الويب.

  • التفاعل مع الجداول والقوائم المنسدلة والنوافذ المنبثقة.

  • تحميل تقارير أو ملفات دورية من مواقع داخلية أو خارجية.

ورغم أن selenium أبطأ من استخدام واجهات API المباشرة، إلا أنها تظل الخيار الوحيد في كثير من الحالات التي لا يمكن فيها الوصول إلى البيانات إلا من خلال واجهة المتصفح.

8. مكتبة smtplib و email: إرسال البريد الإلكتروني تلقائيًا
عندما تحتاج إلى إرسال تقارير أو تنبيهات بريدية بشكل آلي—مثل إرسال نتائج معالجة، أو إشعارات بحدوث خطأ، أو إرسال نسخ احتياطية بشكل دوري—توفر لك بايثون مكتبتين مدمجتين في اللغة هما smtplib وemail، واللتان يمكن من خلالهما إنشاء رسائل بريد إلكتروني وإرسالها برمجيًا عبر خوادم SMTP.

مكتبة smtplib تُستخدم لإنشاء الاتصال بخادم البريد (SMTP)، بينما تُستخدم مكتبة email لبناء محتوى الرسالة (العنوان، المرسل، المستقبل، النص، المرفقات، إلخ).

مثال عملي بسيط لإرسال رسالة نصية:

import smtplib
from email.message import EmailMessage

msg = EmailMessage()
msg['Subject'] = 'تقرير الأتمتة اليومي'
msg['From'] = '[email protected]'
msg['To'] = '[email protected]'
msg.set_content('هذا هو التقرير اليومي المرسل تلقائيًا.')

with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
    smtp.login('[email protected]', 'your_password')
    smtp.send_message(msg)

يمكنك أيضًا:

  • إرسال ملفات كمرفقات (مثل PDF أو Excel).

  • إرسال رسائل بصيغة HTML لتنسيقات أكثر احترافية.

  • استخدام خدمات SMTP أخرى مثل Outlook أو Zoho.

تنبيه مهم:
في حالة استخدام بريد Gmail، تحتاج إلى تفعيل "الوصول للتطبيقات الأقل أمانًا" أو إنشاء "كلمة مرور خاصة بالتطبيق" من إعدادات الأمان في حسابك.

استخدامات عملية شائعة:

  • إرسال تقرير مبيعات أو جرد يومي بصيغة Excel.

  • إرسال تنبيه عند انتهاء مهمة معينة أو حدوث خطأ في سكربت.

  • إرسال إشعارات عند توفر ملفات جديدة في مجلد معين.

  • دمج مع schedule لإرسال بريد يومي أو أسبوعي تلقائيًا.

استخدام smtplib و email في أتمتة البريد يجعل بايثون أداة قوية لبناء أنظمة تنبيه أو تقارير دورية لا تعتمد على تدخل المستخدم، مما يرفع من كفاءة العمليات ويقلل من الأخطاء البشرية.

9. مكتبة openpyxl أو xlrd: التعامل مع ملفات Excel (قراءة وتعديل)
عند أتمتة المهام المكتبية، من الشائع التعامل مع ملفات Excel سواء لقراءة بيانات تقارير، تعديل جداول، أو إنتاج ملفات جديدة تحتوي على نتائج معالجة معينة. وهنا يأتي دور مكتبات مثل openpyxl و xlrd.

مكتبة openpyxl:
مكتبة حديثة نسبيًا وتدعم ملفات Excel بصيغة .xlsx. تتيح لك إنشاء ملفات جديدة، قراءة محتويات خلايا معينة، تعديل البيانات، تنسيق الخلايا، وإضافة صيغ (Formulas).

مثال بسيط لقراءة بيانات من ملف:

from openpyxl import load_workbook

wb = load_workbook('report.xlsx')
sheet = wb.active

value = sheet['B2'].value
print("قيمة الخلية B2:", value)

مثال لتعديل محتوى خلايا:

sheet['B2'] = "تم التعديل"
wb.save('report_modified.xlsx')

مكتبة xlrd:
تُستخدم أساسًا لقراءة ملفات Excel القديمة بصيغة .xls، لكنها لم تعد تدعم .xlsx بشكل افتراضي منذ الإصدار 2.0. لذلك، استخدام openpyxl هو الخيار الأنسب للملفات الحديثة، بينما يُفضل xlrd فقط إذا كنت تتعامل مع ملفات قديمة جدًا.

ما يمكن فعله بهذه المكتبات:

  • قراءة ملفات Excel وتحويلها إلى بيانات قابلة للمعالجة.

  • تحديث قيم خلايا معينة اعتمادًا على منطق معين (مثل الحسابات أو الفلاتر).

  • توليد تقارير Excel يومية أو شهرية تلقائيًا.

  • استخدام التنسيق الشرطي أو الألوان لتمييز الخلايا (في openpyxl فقط).

  • إضافة رسوم بيانية أو صيغ رياضية داخل الملف.

أمثلة عملية:

  • استخراج مبيعات شهرية من ملف وتلخيصها تلقائيًا.

  • تعديل تقرير يحتوي على أسماء موظفين وتحديث حالة الحضور تلقائيًا.

  • إنشاء ملف Excel جديد يحتوي على نتائج استعلام من قاعدة بيانات.

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

قوة بايثون الحقيقية تكمن في تنوع مكتباتها وسهولة دمجها، ما يسمح لك ببناء سكربتات أتمتة متكاملة تؤدي مهام معقدة بخطوات بسيطة. كل مكتبة من هذه المكتبات تعالج جانبًا معينًا من جوانب الأتمتة، وعند استخدامها معًا، يمكن تحقيق نظام متكامل يعمل تلقائيًا دون تدخل بشري.

ابدأ بتجربة السيناريوهات البسيطة، مثل نسخ الملفات أو إرسال تقارير بالبريد، ثم طوّر أدواتك تدريجيًا لتشمل التفاعل مع المواقع والواجهات الرسومية. ومع الوقت، ستجد أن الكثير من المهام التي كانت تستهلك وقتك وجهدك يمكن إنجازها تلقائيًا وبكفاءة أعلى.

حول المحتوى:

في هذا المقال، نستعرض أشهر مكتبات بايثون المستخدمة في أتمتة المهام اليومية، مع شرح بسيط لوظيفة كل مكتبة وكيف يمكن استخدامها في سيناريوهات عملية.