البلوك with في بايثون
يمكنك الإستفادة من إستخدام أسلوب البلوك with في حال أردت أن يتم إغلاق الملفات التي تفتحها في برامجك بشكل تلقائي و بدون الحاجة لإستدعاء الدالة close().
طريقة تعريف البلوك with :
with expression [as variable]:
#with-block
expression: نضع مكانه الأمر الذي سيرجع لنا كائن يشير الملف الذي تم فتحه في الذاكرة.variable: نضع مكانه إسم الكائن الذي نريد من خلاله أن نتعامل مع الملف الذي تم فتحه في الذاكرة.#with-block: مكان هذا التعليق نضع الأوامر التي نريد تنفيذها بعد أن تم فتح الملف بنجاح.
في المثال التالي قمنا بفتح ملف و قراءة النص الموجود فيه بدون الحاجة لإغلاقه عند الإنتهاء منه لأننا وضعنا الكود بداخل بلوك الكلمة with.
مثال على البلوك with
# بعدها قمنا بطباعة النص الموجود فيه 'demo.txt' يشير للملف opened_file هنا قمنا بإنشاء كائن إسمه
with open('demo.txt', 'r') as opened_file:
print(opened_file.read())
# هنا قمنا بطباعة ما إن كان الملف لا يزال مفتوحاً في الذاكرة أم أنه تم إغلاقه
print('Is File Closed:', opened_file.closed)
•بعد تشغيل الملف Test.py سيتم طباعة كل النص الموجود في الملف demo.txt الذي إفترضنا أننا أنشأناه سابقاً في نفس المشروع الذي نعمل فيه.
•نلاحظ أن الدالة closed() أرجعت القيمة True و هذا يعني أنه تم إغلاق الملف من الذاكرة بشكل تلقائي عند إنتهاء البلوك with.
Is File Closed: True