0Pricing
Python Academy · درس

استخدام عبارة with مع الملفات

تأكّد من إغلاق الملفات تلقائياً باستخدام مديري السياق

استخدام عبارة with مع الملفات درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Python Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Python Academy 4 دروس في المجموع.

مقدمة

تضمن تعليمة with إغلاق الملفات تلقائيًا، حتى عند حدوث استثناء.

تعليمة with

تغلق with open('file.txt') as f: ... الكائن f تلقائيًا عند انتهاء الكتلة، سواء انتهت بشكل طبيعي أو بسبب استثناء.
# with open('data.txt') as f:
#     content = f.read()
# f is now closed
print('with demo')

لماذا تُعد with أفضل من try/finally

من دون with، يجب كتابة try: ... finally: f.close() لضمان إغلاق الملف. تتولى with ذلك تلقائيًا.
# Equivalent to:
# f = open('file.txt')
# try:
#     content = f.read()
# finally:
#     f.close()
print('comparison demo')

ملفات متعددة

تفتح with open('a.txt') as a, open('b.txt') as b: ملفين في تعليمة واحدة.
# with open('in.txt') as src, open('out.txt','w') as dst:
#     for line in src:
#         dst.write(line.upper())
print('multi-file demo')

بروتوكول مدير السياق

تستخدم with الدالتين __enter__ و__exit__. وتعيد open() كائن ملف يطبّق هاتين الدالتين. سنكتب تطبيقنا الخاص لاحقًا.
# f.__enter__() opens
# f.__exit__() closes
print('protocol demo')

القراءة والمعالجة

اجمع بين with و for line in f: و .strip() لمعالجة الأسطر بوضوح: أزل الأسطر الجديدة وتجاوز الأسطر الفارغة.
lines = ['  hello  \n', '  world  \n']
cleaned = [l.strip() for l in lines if l.strip()]
print(cleaned)

الكتابة باستخدام with

with open('out.txt','w') as f: f.write('data') — يُفرَّغ الملف ويُغلق عند مغادرة الكتلة.
# with open('out.txt', 'w') as f:
#     for i in range(10):
#         f.write(f'{i}\n')
print('write with demo')

التحقق من وجود ملف

يعيد import os; os.path.exists('file.txt') القيمة True إذا كان الملف موجودًا. ويساعد ذلك على منع FileNotFoundError.
import os
print(os.path.exists('/tmp'))
print(os.path.exists('/nonexistent'))

أخطاء open()

يعني FileNotFoundError أن الملف غير موجود. ويعني PermissionError عدم امتلاك صلاحيات القراءة أو الكتابة. غلّف العملية داخل try/except لمعالجة الأخطاء بشكل موثوق.
try:
    with open('/nonexistent.txt') as f:
        pass
except FileNotFoundError as e:
    print('File not found:', e)

StringIO للملفات الموجودة في الذاكرة

يتيح لك from io import StringIO استخدام سلسلة نصية ككائن ملف، وهو مفيد جدًا لاختبار التعليمة البرمجية التي تعالج الملفات.
from io import StringIO
buf = StringIO('line1\nline2\n')
for line in buf:
    print(line.rstrip())

الوحدة tempfile

تنشئ tempfile.NamedTemporaryFile() ملفًا مؤقتًا يُحذف عند إغلاقه. وهذا آمن لمعالجة البيانات المؤقتة.
import tempfile
with tempfile.NamedTemporaryFile(mode='w', suffix='.txt', delete=True) as f:
    f.write('temp data')
    print(f.name)

تحقق سريع

ما الذي تضمنه تعليمة with عند استخدامها مع عمليات إدخال وإخراج الملفات؟

مراجعة

تغلق with open(f) as h: الكائن h تلقائيًا. استخدم أهدافًا متعددة للتعامل مع ملفات متعددة. استخدم StringIO للاختبار داخل الذاكرة. وعالج FileNotFoundError بطريقة مناسبة.

تابع التقدم

أحسنت! انتقل إلى الدرس التالي لمواصلة تقدمك.

الأسئلة الشائعة

هل درس «استخدام عبارة with مع الملفات» مجاني؟

نعم — نص درس «استخدام عبارة with مع الملفات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 4 دروس في المجموع.

ماذا ستتعلم في «استخدام عبارة with مع الملفات»؟

تأكّد من إغلاق الملفات تلقائياً باستخدام مديري السياق تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟

لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «استخدام عبارة with مع الملفات»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟

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

جميع الدروس في هذه الدورة

  1. فتح الملفات وقراءتها
  2. الكتابة إلى الملفات والإلحاق بها
  3. استخدام عبارة with مع الملفات
  4. التعامل مع مسارات الملفات باستخدام pathlib
← العودة إلى Python Academy