أساسيات الذكاء الاصطناعي

التعامل مع الملفات بشكل تلقائي باستخدام بايثون

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

أتمتة التعامل مع الملفات باستخدام بايثون

related image

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

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

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

إيه هي أتمتة التعامل مع الملفات في بايثون؟

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

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

ليه نعمل أتمتة للتعامل مع الملفات ببايثون؟

توفير الوقت بشكل هائل

اللي بياخد منك ساعات لما تعمله يدوي ممكن يتعمل في ثواني ببايثون. سكريبت بيغير اسم 1000 ملف بيشتغل بنفس سرعة سكريبت بيغير اسم 10 ملفات. مرة قللت مهمة أسبوعية بتاخد 4 ساعات لتنفيذ سكريبت بياخد 10 ثواني—ده توفير 208 ساعة في السنة!

القضاء على الأخطاء البشرية

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

إمكانية التكرار

بمجرد ما تكتب سكريبت للتعامل مع الملفات، تقدر تشغله مرة ورا مرة بمدخلات مختلفة. محتاج تعالج مجموعة تانية من الملفات بنفس الطريقة الشهر الجاي؟ شغل السكريبت تاني—مش محتاج تفتكر كل الخطوات.

أساسيات التعامل مع الملفات في بايثون

قبل ما ندخل في الأمثلة، تعالوا نتكلم بسرعة عن المكتبات الأساسية في بايثون اللي بتخلي أتمتة الملفات ممكنة:

  • os و os.path – للعمليات الأساسية على الملفات والتعامل مع مسارات الملفات
  • shutil – عمليات ملفات متقدمة زي نسخ ونقل الملفات/المجلدات
  • pathlib – طريقة حديثة موجهة للكائنات للتعامل مع مسارات الملفات (بايثون 3.4+)
  • glob – للبحث عن ملفات بتطابق أنماط معينة (زي *.txt)
  • zipfile/tarfile – للتعامل مع الملفات المضغوطة

أمثلة عملية لأتمتة الملفات ببايثون

مثال 1: تغيير أسماء مجموعة ملفات

import os

# المجلد اللي فيه الملفات
directory = "C:/Users/YourName/Documents/project_files"

# لوب على كل الملفات في المجلد
for filename in os.listdir(directory):
    # التحقق إذا كان ملف (مش مجلد)
    if os.path.isfile(os.path.join(directory, filename)):
        # إنشاء اسم ملف جديد بإضافة بادئة
        new_filename = "processed_" + filename
        
        # تغيير اسم الملف
        os.rename(
            os.path.join(directory, filename),
            os.path.join(directory, new_filename)
        )
        print(f"Renamed {filename} to {new_filename}")

السكريبت البسيط ده بيضيف “processed_” في بداية كل ملف في المجلد. استخدمت حاجة مشابهة لما احتجت أعلم مئات ملفات الفواتير PDF كمعالجة بعد استيرادها في نظام المحاسبة بتاعنا. أخدت حوالي 3 ثواني بدل ساعة شغل يدوي.

مثال 2: تنظيم الملفات حسب الامتداد

import os
import shutil

# المجلد المطلوب تنظيمه
directory = "C:/Users/YourName/Downloads"

# لوب على كل الملفات
for filename in os.listdir(directory):
    # تخطي المجلدات
    if os.path.isdir(os.path.join(directory, filename)):
        continue
        
    # الحصول على امتداد الملف (محول لحروف صغيرة)
    file_ext = os.path.splitext(filename)[1][1:].lower()
    
    if file_ext:  # تخطي الملفات بدون امتداد
        # إنشاء مجلد الوجهة إذا مكانش موجود
        dest_folder = os.path.join(directory, file_ext)
        if not os.path.exists(dest_folder):
            os.makedirs(dest_folder)
            
        # نقل الملف
        source = os.path.join(directory, filename)
        destination = os.path.join(dest_folder, filename)
        shutil.move(source, destination)
        print(f"Moved {filename} to {file_ext} folder")

السكريبت ده بينظم مجلد التنزيلات بتاعك حسب نوع الملف. بشغله على مجلد التنزيلات بتاعي كل كام أسبوع لما يبدأ يبان زي درج الخردة الرقمية، وفجأة كل ملفات PDF وJPG وDOCX بتترتب في مجلدات خاصة بيها. الإحساس ده مرضي بشكل غريب.

مثال 3: البحث عن وحذف الملفات المؤقتة

import os
import time

# المجلد المراد تنظيفه
directory = "C:/Users/YourName/Documents/temp_files"

# عمر الملف بالأيام عشان يتحذف
days_threshold = 30
seconds_threshold = days_threshold * 24 * 60 * 60
now = time.time()

# عداد للملفات المحذوفة
deleted_count = 0
freed_space = 0

# المشي خلال كل الملفات والمجلدات الفرعية
for root, dirs, files in os.walk(directory):
    for filename in files:
        file_path = os.path.join(root, filename)
        
        # الحصول على وقت آخر تعديل للملف
        file_age = now - os.path.getmtime(file_path)
        
        # التحقق إذا كان الملف أقدم من الحد
        if file_age > seconds_threshold:
            # الحصول على حجم الملف قبل الحذف
            file_size = os.path.getsize(file_path)
            freed_space += file_size
            
            # حذف الملف
            os.remove(file_path)
            deleted_count += 1
            print(f"Deleted: {file_path}")

print(f"Deleted {deleted_count} files")
print(f"Freed up {freed_space / (1024*1024):.2f} MB")

السكريبت ده بيلاقي ويحذف الملفات الأقدم من 30 يوم في مجلد مؤقت. عملته كمهمة مجدولة على كمبيوتر الشغل بعد ما اكتشفت إني بخزن مئات ملفات التصدير المؤقتة اللي مش هحتاجها تاني. تنظيف رقمي أوتوماتيكي!

الخرافات الشائعة حول أتمتة الملفات ببايثون

  • خرافة: لازم تكون خبير برمجة. لأ طبعًا! معرفة أساسيات بناء جملة بايثون وفهم عمليات الملفات كفاية عشان تبدأ بأتمتة قوية.
  • خرافة: مفيدة بس للشركات الكبيرة. غلط! حتى لو بتتعامل مع عشرات وليس آلاف الملفات، الأتمتة برضه بتوفر وقت وبتقلل الأخطاء.
  • خرافة: إعداد الأتمتة بياخد وقت أطول من العمل اليدوي. للمهام اللي بتتعمل مرة واحدة، ممكن. لكن معظم عمليات الملفات متكررة – اكتب السكريبت مرة واحدة، استخدمه للأبد.

حالات استخدام متقدمة لأتمتة الملفات ببايثون

التعامل مع ملفات إكسل

باستخدام مكتبات زي pandas أو openpyxl، تقدر تستخرج بيانات من ملفات إكسل متعددة، تحولها، وتحفظ النتائج في ملفات جديدة. استخدمت ده عشان أجمع تقارير أسبوعية من 15 قسم مختلف في ملف لوحة معلومات رئيسي واحد، وقللت شغل يوم كامل لتشغيل