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.
💥 الاستثناءات
OSError— Raised (including subclasses like FileNotFoundError) when the file cannot be opened.ValueError— Raised when mode is invalid or the mode/encoding combination conflicts.
▶ مثال
عدّل الكود واضغط تشغيل لرؤية النتيجة في لوحة المخرجات:
المخرجات:
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.