يوفر هذا البرنامج التعليمي دليلًا شاملاً على معالجة الملفات في بايثون. تعد الملفات أمرًا بالغ الأهمية لتخزين البيانات واسترجاعها بشكل دائم، مما يسمح لبرامجك بالتفاعل مع البيانات لما يتجاوز وقت تشغيلها. سنغطي عمليات الملفات الأساسية، من فتح الملفات وإغلاقها إلى قراءتها وكتابتها وإعادة تسميتها وحذفها. سنستكشف أيضًا أفضل الممارسات لمعالجة الأخطاء وإدارة الملفات بكفاءة.
جدول المحتويات:
- فتح الملفات
- كائنات الملفات ومديري السياق
- الكتابة في الملفات
- القراءة من الملفات
- عمليات نظام الملفات: إعادة التسمية والحذف
- معالجة الاستثناءات
1. فتح الملفات
تُعد دالة open()
حجر الزاوية في تفاعل الملفات في بايثون. وهي تأخذ اسم الملف (سلسلة نصية) ووضعًا كوسيطتين أساسيتين. يحدد الوضع كيفية الوصول إلى الملف (القراءة، الكتابة، الإضافة، إلخ).
تشمل الأوضاع الشائعة:
'r'
: القراءة (افتراضيًا). يفتح للقراءة. يثير خطأ إذا لم يكن الملف موجودًا.'w'
: الكتابة. يفتح للكتابة. يُعيد كتابة الملف إذا كان موجودًا؛ ويُنشئه إذا لم يكن موجودًا.'a'
: الإضافة. يفتح للكتابة. يُضيف البيانات إلى النهاية إذا كان الملف موجودًا؛ ويُنشئه إذا لم يكن موجودًا.'x'
: إنشاء حصري. يُنشئ ملفًا جديدًا. يثير خطأ إذا كان الملف موجودًا بالفعل.'b'
: الوضع الثنائي. للملفات غير النصية (الصور، الملفات التنفيذية). يمكن دمجه مع أوضاع أخرى (مثل'rb'
،'wb'
).'t'
: الوضع النصي (افتراضيًا). للملفات النصية.
# فتح ملف للكتابة
file = open("my_file.txt", "w")
# فتح ملف للقراءة
file = open("my_file.txt", "r")
# فتح ملف في الوضع الثنائي للقراءة
file = open("image.jpg", "rb")
2. كائنات الملفات ومديري السياق
ترجع open()
كائن ملف، مما يوفر طرقًا للتفاعل مع الملف. أفضل ممارسة أساسية هي استخدام مديري السياق (بيان with
) لضمان إغلاق الملفات تلقائيًا، حتى في حالة حدوث أخطاء:
with open("my_file.txt", "w") as file:
file.write("This is some text.n") # يتم إغلاق الملف تلقائيًا بعد هذا الكتلة
with open("my_file.txt", "r") as file:
contents = file.read()
print(contents)
3. الكتابة في الملفات
تكتب طريقة write()
سلسلة نصية إلى الملف. للكتابة في أسطر متعددة، استخدم n
لأسطر جديدة.
with open("my_file.txt", "w") as file:
file.write("Line 1n")
file.write("Line 2n")
4. القراءة من الملفات
توجد عدة طرق لقراءة بيانات الملف:
read()
: تقرأ محتوى الملف بالكامل في سلسلة نصية واحدة.readline()
: تقرأ سطرًا واحدًا.readlines()
: تقرأ جميع الأسطر في قائمة من السلاسل النصية.- التكرار: يمكنك التكرار مباشرةً فوق كائن الملف لقراءة الأسطر واحدًا تلو الآخر.
with open("my_file.txt", "r") as file:
contents = file.read()
print(contents)
file.seek(0) # إعادة تعيين مؤشر الملف
line = file.readline()
print(line)
file.seek(0) # إعادة تعيين مؤشر الملف
lines = file.readlines()
print(lines)
file.seek(0) # إعادة تعيين مؤشر الملف
for line in file:
print(line, end="") #end="" يمنع سطر جديد إضافي
5. عمليات نظام الملفات: إعادة التسمية والحذف
يوفر مُعامل os
دوالًا للتحكم في نظام الملفات:
import os
# إعادة تسمية ملف
os.rename("my_file.txt", "new_file.txt")
# حذف ملف
os.remove("new_file.txt")
6. معالجة الاستثناءات
تعامل دائمًا مع الاستثناءات المحتملة (FileNotFoundError
، IOError
، إلخ) عند العمل مع الملفات:
try:
with open("my_file.txt", "r") as file:
# ... عمليات الملف ...
except FileNotFoundError:
print("لم يتم العثور على الملف.")
except IOError as e:
print(f"حدث خطأ في الإدخال/الإخراج: {e}")