جاري التحميل...

إغلاق الملف بأمان

في الصفحة السابقة كنت تغلق الملف بنفسك بكتابة close. لكن لو توقف البرنامج قبل ذلك السطر فقد يبقى الملف مفتوحًا. هنا يتولى with الأمر عنك: يُغلق الملف حين تنتهي الأسطر الداخلة تحته بمسافة بادئة، وحتى لو توقف أحد هذه الأسطر في منتصف الطريق.

الشاشة تعرض saved، أما bread ففي الملف

python
with open("plate.txt", "w", encoding="utf-8") as plate:
    plate.write("bread\n")
print("saved")

لن ترى على الشاشة سوى saved. أما bread فمكانها الملف plate.txt وليس الشاشة. نُفّذ write والملف ما زال مفتوحًا، ثم انتهت المسافة البادئة فأُغلق الملف، وبعد ذلك فقط نُفّذ print. لاحظ أنه لا يوجد close في هذا البرنامج، فلا تضفه بعد print ولا داخل المسافة البادئة. والاسم plate يشير إلى الملف المفتوح ما دمنا داخل المسافة البادئة فقط. وencoding="utf-8" يحفظ الحروف نصًّا، بينما w ما زال يمسح ما كان مكتوبًا في الملف من قبل.

سطر write مكتوب بمسافة بادئة تحت with، وهذا ما يجعله داخل الكتلة. أما print("saved") فلا مسافة قبله، ولذلك هو خارجها، ولا يُنفَّذ إلا إذا أكمل ما في الداخل عمله دون توقف.

لو كتبت 1 / 0 تحت المسافة البادئة نفسها لتوقف البرنامج، ولن يُكتب saved. ومع ذلك يُغلق الملف، لأن الخروج من المسافة البادئة يغلقه قبل أن ينتهي البرنامج عند هذا التوقف. وهذا السطر ليس في برنامج هذه الصفحة.

الصفحة القادمة عن مسار الملف، أما هذه فتكتفي بإغلاقه.

الملف يُغلق حين تنتهي المسافة البادئة

تعرض الشاشة saved، وفي plate.txt كلمة bread، ولا يوجد close هنا. وإذا توقف سطر داخل المسافة البادئة أُغلق الملف ولم يُكتب saved. والصفحة القادمة عن مسار الملف.

🧠 اختبر معرفتك

جاهز للبدء

اختبر معرفتك

تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع

❓
5
الأسئلة
🎯
70%
للنجاح
♾️
∞
الوقت
🔄
∞
المحاولات

📝 التعليمات

  • اقرأ كل سؤال بعناية
  • اختر أفضل إجابة لكل سؤال
  • يمكنك إعادة الاختبار عدة مرات كما تريد
  • سيتم عرض تقدمك في الأعلى