الدرس الحادي عشر: التعامل مع الملفات (Files) في بايثون — قراءة وكتابة البيانات خطوة بخطوة

📘 سلسلة تعلم بايثون — الدرس الحادي عشر

التعامل مع الملفات (Files) في بايثون — قراءة وكتابة البيانات خطوة بخطوة

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

مقدمة الدرس

في الدروس السابقة كنا نخزن البيانات داخل المتغيرات أو القوائم أو القواميس. لكن هذه البيانات كانت تبقى داخل البرنامج فقط، وبمجرد إغلاقه تختفي. هنا تظهر أهمية الملفات.

الملفات تسمح لنا بحفظ البيانات على الجهاز حتى نستطيع الرجوع إليها لاحقًا. وهذا مهم جدًا في البرامج الحقيقية مثل:

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

ما هو الملف في البرمجة؟

الملف هو مكان على القرص الصلب أو في مساحة التخزين نحفظ فيه البيانات. قد يكون ملفًا نصيًا مثل notes.txt أو ملف CSV أو ملفًا آخر.

في هذا الدرس سنركز على الملفات النصية لأنها الأسهل للمبتدئين.

أمثلة على الملفات

  • students.txt لحفظ أسماء التلاميذ
  • notes.txt لحفظ الملاحظات
  • data.txt لحفظ بيانات عامة

فتح ملف في بايثون

لفتح ملف في بايثون نستخدم الدالة open().

file = open("data.txt", "r")

في هذا المثال:

  • data.txt هو اسم الملف
  • r هو وضع القراءة

أوضاع فتح الملفات

الوضع المعنى
r قراءة الملف
w الكتابة في الملف مع حذف المحتوى القديم
a إضافة بيانات جديدة في نهاية الملف
x إنشاء ملف جديد فقط

قراءة ملف كامل

إذا كان لدينا ملف اسمه students.txt ومحتواه كالتالي:

Ali Sara Yassine

يمكننا قراءة محتواه كاملًا بهذه الطريقة:

file = open("students.txt", "r") content = file.read() print(content) file.close()
الدالة read() تقرأ كل محتوى الملف دفعة واحدة.

قراءة الملف سطرًا سطرًا

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

file = open("students.txt", "r") for line in file: print(line) file.close()

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

كتابة ملف جديد

إذا أردنا إنشاء ملف جديد وكتابة بيانات بداخله نستخدم الوضع w.

file = open("notes.txt", "w") file.write("Hello Python") file.close()
انتبه: الوضع w يحذف المحتوى القديم ويستبدله بالمحتوى الجديد.

مثال آخر

file = open("names.txt", "w") file.write("Ali\n") file.write("Sara\n") file.write("Yassine\n") file.close()

إضافة بيانات إلى ملف

إذا أردنا الاحتفاظ بالمحتوى القديم وإضافة بيانات جديدة نستخدم الوضع a.

file = open("notes.txt", "a") file.write("\nNew line") file.close()

هنا لم نحذف المحتوى السابق، بل أضفنا سطرًا جديدًا في نهاية الملف.

الطريقة الاحترافية: with open

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

with open("students.txt", "r") as file: content = file.read() print(content)

الميزة هنا أن الملف يُغلق تلقائيًا بعد انتهاء الكود.

القاعدة الذهبية: في أغلب الحالات، استعمل with open بدل open العادية.

أمثلة عملية متنوعة

المثال الأول: حفظ اسم جديد في ملف

name = input("Enter student name: ") with open("students.txt", "a") as file: file.write(name + "\n") print("Student saved!")

المثال الثاني: عرض جميع الأسماء من الملف

with open("students.txt", "r") as file: for student in file: print("Student:", student.strip())

المثال الثالث: كتابة تقرير جديد

with open("report.txt", "w") as file: file.write("Python Report\n") file.write("This is my first file.\n") file.write("Files are very useful.")

المثال الرابع: قراءة أول سطر فقط

with open("students.txt", "r") as file: first_line = file.readline() print(first_line)

أخطاء شائعة عند التعامل مع الملفات

1) نسيان إغلاق الملف

file = open("data.txt", "r") print(file.read())

هذا الكود يعمل، لكن الأفضل أن نستخدم with open.

2) محاولة قراءة ملف غير موجود

إذا حاولت قراءة ملف غير موجود سيظهر الخطأ:

FileNotFoundError

الحل باستخدام try / except

try: with open("data.txt", "r") as file: print(file.read()) except: print("File not found")

متى نستخدم الملفات؟

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

تمارين تطبيقية مع الحلول

التمرين الأول

أنشئ ملفًا باسم names.txt ثم اكتب بداخله 3 أسماء.

with open("names.txt", "w") as file: file.write("Ali\n") file.write("Sara\n") file.write("Yassine\n")

التمرين الثاني

اكتب برنامجًا يقرأ محتوى ملف names.txt ويطبعه على الشاشة.

with open("names.txt", "r") as file: print(file.read())

التمرين الثالث

اكتب برنامجًا يطلب من المستخدم اسمًا جديدًا ثم يضيفه إلى الملف.

name = input("Enter name: ") with open("names.txt", "a") as file: file.write(name + "\n")

التمرين الرابع

حاول قراءة ملف غير موجود ثم تعامل مع الخطأ بطريقة آمنة.

try: with open("unknown.txt", "r") as file: print(file.read()) except: print("هذا الملف غير موجود")

اختبار تفاعلي

1) أي وضع نستخدمه لقراءة الملف؟

2) أي وضع نستخدمه لإضافة بيانات دون حذف القديم؟

3) ما هي الطريقة الأكثر أمانًا لفتح الملفات؟

خلاصة الدرس

في هذا الدرس تعلمنا:

  • ما هو الملف في البرمجة
  • كيفية فتح ملف في بايثون
  • الفرق بين أوضاع القراءة والكتابة والإضافة
  • كيفية قراءة الملفات وكتابة البيانات بداخلها
  • الطريقة الاحترافية باستخدام with open
  • كيفية التعامل مع بعض الأخطاء الشائعة
بعد إتقان الملفات، ستكون مستعدًا لكتابة برامج تحفظ البيانات وتقرأها من جديد، وهذه خطوة قوية جدًا نحو المشاريع الحقيقية.
اقتراح الدرس القادم: الدرس الثاني عشر: التعامل مع الاستثناءات والأخطاء في بايثون (Errors & Exceptions)

تعليقات

المشاركات الشائعة من هذه المدونة

تربية الأطفال في عصر الذكاء الاصطناعي: دليل الآباء والمربين لتحقيق توازن تربوي آمن

الدرس السادس : شرح Functions في Python بأسلوب مبسط مع أمثلة عملية

كيف نحمي أبناءنا من إدمان الهاتف الذكي؟