open() فتح ملف

آخر تحديث: 2026-09-22

open() فتح ملف

تفتح open() ملفًا وتُرجع كائن file. يُوصى بشدة باستخدام عبارة with لإدارته.

التصنيفالدوال المدمجة
النوعدالة مدمجة
إصدار بايثونall

📝 الصياغة

open(file, mode='r', ...)

⚙️ المعاملات

file مطلوبFile path (str / bytes / os.PathLike) or an integer file descriptor.
mode اختياريOpening mode: 'r'/'w'/'a'/'x', combinable with 'b', '+' etc.(القيمة الافتراضية:'r')
buffering اختياريBuffering: 0 off, 1 line-buffered, >1 the buffer size in bytes.(القيمة الافتراضية:-1)
encoding اختياريText encoding such as 'utf-8'; defaults to the platform encoding.(القيمة الافتراضية:None)
errors اختياريEncoding error handling: 'strict'/'ignore'/'replace' etc.(القيمة الافتراضية:None)
newline اختياريNewline handling; None enables universal newline mode.(القيمة الافتراضية:None)
closefd اختياريWhether to close the descriptor too when file is a descriptor and the file is closed.(القيمة الافتراضية:True)
opener اختياريA custom opener callable that returns a file descriptor.(القيمة الافتراضية:None)

القيمة المُعادة:A file object: TextIOWrapper in text mode, a BufferedIOBase subclass in binary mode.

💥 الاستثناءات

▶ مثال

عدّل الكود واضغط تشغيل لرؤية النتيجة في لوحة المخرجات:

المخرجات:

hello
💡 تلميح استخدم with لإغلاق الملف تلقائيًا؛ وحدّد encoding لتجنب مزالق الترميز الافتراضي للمنصة.
المزيد من الحالات قادم قريباً — تابعونا.

❓ أسئلة شائعة

Qما خطر فتح ملف بدون with؟
Aقد لا يُغلق الملف تلقائيًا، فيحدث تسرب لوصف الملف وعدم تسطيل المحتوى المكتوب؛ باستخدام with open(...) as f: يُغلق تلقائيًا حتى لو وقع استثناء في المنتصف.
Qلماذا يجب تمرير encoding='utf-8' عند قراءة ملفات صينية؟
Aبدونه تُستخدم الترميز الافتراضي للنظام (على ويندوز الصيني هو gbk)، وهو يختلف عن ملفات utf-8 فيُثير UnicodeDecodeError أو يُنتج نصًّا مشوشًا؛ يُوصى بتحديد encoding صراحةً في القراءة والكتابة.
Qما الفرق بين أنماط open() 'r'/'w'/'a'/'x'؟
A'r' للقراءة فقط (الافتراضي؛ إذا لم يوجد الملف يُثار FileNotFoundError)، و'w' للكتابة مع مسح المحتوى الأصلي (ينشئ إن لم يوجد)، و'a' للإلحاق، و'x' الإنشاء الحصري (يُثار FileExistsError إذا كان الملف موجودًا).
Qكيف أفتح ملفًا ثنائيًا؟
Aأضف 'b' إلى النمط: open('img.png', 'rb') للقراءة بايتات وopen('img.png', 'wb') للكتابة بايتات؛ النمط الثنائي لا يقبل وسيطة encoding.
Web-Tutorial.com

فريق Web-Tutorial التقني

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

100%