لدينا جميعاً تلك المهام الصغيرة والمملة على الكمبيوتر. تلك التي تستغرق 10 أو 15 دقيقة، ولكنها كافية لتجعلك تشعر بالملل. بالنسبة لي، كانت تلك المهمة هي إعادة تسمية الملفات.
بصفتي شخصاً يتعلم البرمجة، أبحث دائماً عن طرق لتطبيق ما أتعلمه. في الأسبوع الماضي، واجهتني مشكلة "كلاسيكية" مملة، وقررت أن أمنح بايثون 5 دقائق فقط لحلها... والنتيجة كانت مذهلة. لقد حولت 15 دقيقة من العمل اليدوي المتكرر إلى أتمتة تستغرق ثوانٍ معدودة.
المهمة المملة: 100 صورة من عطلتي
لقد عدت للتو من رحلة رائعة وقمت بنسخ جميع صوري على جهاز الكمبيوتر الخاص بي. المشكلة؟ كانت أسماؤها جميعاً شيئاً مثل IMG_7458.JPG, IMG_7459.JPG, IMG_7460.JPG... إلخ.
أردت أن أجعلها منظمة أكثر، شيئاً مثل: Trip-Paris-001.jpg, Trip-Paris-002.jpg وهكذا.
الطريقة اليدوية (المملة): كنت سأضغط F2 (إعادة تسمية)، أكتب الاسم الجديد، أضغط Enter. ثم أكرر ذلك 100 مرة. لقد قمت بحسابها، هذا كان سيستغرق مني 15 دقيقة على الأقل من النقر الممل، ويزيد من احتمالية الأخطاء البشرية!
رأيي: لماذا أتعلم البرمجة إذا كنت سأقوم بهذا يدوياً؟
وهنا توقفت. فكرت في نفسي: "انتظر لحظة. أنا أقضي ساعات في تعلم بايثون. إذا لم أستطع استخدامها لتوفير 15 دقيقة من الملل، فما الفائدة؟"
هذه هي اللحظة التي تتحول فيها البرمجة من "دروس نظرية" إلى "أداة قوية". قررت أن أمنح نفسي 5 دقائق فقط لكتابة سكريبت يقوم بالمهمة. إذا فشلت، سأعود للطريقة اليدوية (وهو ما لن يحدث على الأغلب!).
ايضاً لقد كتبت بالتفصيل عن تجربتي الأولى في بناء مشروع حقيقي. يمكنك قراءة المقال: 3 أخطاء كارثية ارتكبتها في أول مشروع بايثون لي (وما تعلمته منها)
الحل: سكريبت بايثون في 5 دقائق (ومع أفضل الممارسات)
للقيام بذلك، نحتاج إلى مكتبة واحدة مدمجة في بايثون: مكتبة os (اختصار لـ Operating System)، والتي تتيح لنا التعامل مع الملفات والمجلدات. في الكود الاحترافي، يفضل استخدام مكتبة pathlib الأحدث والأكثر مرونة، لكن os كافية لمثل هذه المهام البسيطة.
main) لتنظيم الكود وهي أفضل ممارسة.
import os
from pathlib import Path
def rename_photos():
# 1. تحديد المسار: نستخدم Path.home() لنجعله يعمل على أي جهاز
folder_path = Path.home() / "Desktop" / "My-Vacation-Pics"
# 2. البيانات الثابتة
base_name = "Trip-Marrakech-"
count = 1
# 3. التحقق من وجود المجلد (لتجنب الخطأ)
if not folder_path.exists():
print(f"خطأ: المسار {folder_path} غير موجود.")
return # إيقاف التنفيذ
# 4. نبدأ العمل!
for filename in os.listdir(folder_path):
# تجاوز المجلدات والتأكد أن الملف هو صورة
if filename.endswith((".jpg", ".png", ".jpeg")):
try:
# نحصل على امتداد الملف (مثل .jpg)
file_extension = os.path.splitext(filename)[1]
# إنشاء الاسم الجديد بالترقيم (مثل Trip-Marrakech-001.jpg)
new_name = f"{base_name}{str(count).zfill(3)}{file_extension}"
# المسار القديم والجديد بالكامل
old_file = os.path.join(folder_path, filename)
new_file = os.path.join(folder_path, new_name)
# إعادة التسمية!
os.rename(old_file, new_file)
# زيادة العداد للملف التالي
count += 1
except Exception as e:
# التعامل مع أي خطأ قد يحدث أثناء إعادة التسمية
print(f"فشل في معالجة الملف {filename}: {e}")
print(f"تم! تم إعادة تسمية {count - 1} ملف بنجاح.")
# نقطة الدخول الرئيسية (أفضل ممارسة لتشغيل السكريبت)
if __name__ == "__main__":
rename_photos()
النتيجة: 15 دقيقة من الملل اختفت في ثانية!
كتابة الكود استغرقت مني حوالي 4 دقائق (مع البحث السريع عن دالة zfill).
تنفيذ الكود؟ استغرق أقل من ثانية واحدة على جهازي.
لقد شاهدت المجلد وهو يعيد تنظيم نفسه أمام عيني. 100 ملف تم تغيير اسمها بشكل مثالي. الشعور بالرضا كان لا يصدق! لقد حولت 15 دقيقة من العمل اليدوي الممل إلى 5 دقائق من التحدي العقلي الممتع، وأنشأت أداة ستوفر لي هذا الوقت في كل مرة أحتاجها مستقبلاً.
وهذا هو رأيي الحقيقي: القوة الحقيقية للبرمجة للمبتدئين لا تكمن في بناء مواقع ضخمة، بل في استعادة هذه الدقائق الصغيرة من حياتك. كل مهمة مملة هي فرصة لتوفير وقتك للأبد.
الآن دورك: ما هي أكثر مهمة مملة ومكررة تقوم بها على جهازك؟
هل فكرت يوماً في أتمتتها؟ شاركنا أفكارك في التعليقات!
✍️ كتب بواسطة KamalZone