كيفية فتح ملف في Python وقراءة ملف نصي سطرًا بسطر

دقائق القراءة: 5

مقدمة إلى قراءة الملفات النصية في Python

تُعد قراءة الملفات النصية من المهارات الأساسية التي يحتاجها أي مطور يعمل بلغة Python، سواء كان الهدف معالجة البيانات، أو قراءة ملفات الإعدادات، أو التعامل مع السجلات النصية. توفر اللغة عدة أساليب مدمجة تجعل هذه المهمة مرنة وسهلة، بدءًا من الدالة open() ووصولًا إلى استخدام with لقراءة الملفات بطريقة آمنة ومنظمة.

في هذا الدليل، سنتعرف على أهم الطرق المستخدمة لفتح ملف نصي وقراءته سطرًا بسطر، مع شرح عملي للدوال read() وreadline() وreadlines() وclose() وreadable()، بالإضافة إلى أفضل الممارسات عند التعامل مع الملفات.

شرح قراءة الملفات النصية في Python باستخدام open و read و readline

ما هي الدالة open() في Python؟

قبل أن تتمكن من قراءة أي ملف نصي في Python، يجب أولًا فتحه باستخدام الدالة open(). هذه الدالة تُنشئ كائن ملف يمكنك من خلاله تنفيذ عمليات القراءة أو الكتابة بحسب الوضع المحدد.

الصيغة الأساسية للدالة هي:

open("name of file you want opened", "optional mode")

تحديد اسم الملف والمسار الصحيح

إذا كان الملف النصي موجودًا في المجلد نفسه الذي يحتوي على ملف Python الحالي، فيكفي كتابة اسم الملف فقط:

open("demo.txt")

في هذه الحالة، سيبحث Python عن الملف داخل الدليل الحالي مباشرة.

ملف Python والملف النصي داخل المجلد نفسه

أما إذا كان الملف النصي داخل مجلد مختلف، فلا بد من تمرير المسار الصحيح للملف:

مثال على وجود الملف النصي داخل مجلد مختلف عن ملف Python

على سبيل المثال، إذا كان الملف random-text.txt موجودًا داخل مجلد اسمه text-files، فيمكن فتحه بالشكل التالي:

open("text-files/random-text.txt")

إذا كان المسار غير صحيح، فستظهر رسالة خطأ لأن Python لن يتمكن من العثور على الملف:

open("random-text.txt")

رسالة خطأ عند استخدام مسار غير صحيح لفتح ملف في Python

لذلك، من المهم دائمًا التأكد من المجلد الحالي ومسار الملف قبل محاولة قراءته.

أوضاع القراءة في open()

تدعم الدالة open() عدة أوضاع للتعامل مع الملفات. الوضع الافتراضي هو وضع القراءة ويرمز له بالحرف r.

open("demo.txt", mode="r")

ويمكن كتابة الوضع بشكل مختصر دون استخدام اسم الوسيط:

open("demo.txt", "r")

هناك أوضاع أخرى مثل:

  • w للكتابة.
  • a للإضافة في نهاية الملف.

لكن بما أن هذا المقال يركز على قراءة الملفات، فسنكتفي بأهم ما يخص وضع القراءة.

معاملات إضافية في open()

إلى جانب اسم الملف والوضع، تقبل الدالة open() معاملات اختيارية أخرى تساعد على التحكم في طريقة فتح الملف، مثل:

  • buffering
  • encoding
  • errors
  • newline
  • closefd
  • opener

وتُستخدم هذه المعاملات عادة في السيناريوهات المتقدمة، خصوصًا عند التعامل مع ترميزات مختلفة أو ملفات كبيرة.

ما وظيفة readable() في Python؟

إذا أردت التأكد من أن الملف المفتوح يدعم القراءة، يمكنك استخدام الدالة readable(). تعيد هذه الدالة إحدى القيمتين True أو False.

هذا المثال سيعيد True لأن الملف مفتوح في وضع القراءة:

file = open("demo.txt")
print(file.readable())

نتيجة استخدام readable في وضع القراءة داخل Python

أما إذا تم فتح الملف في وضع الكتابة w، فستكون النتيجة False:

file = open("demo.txt", "w")
print(file.readable())

نتيجة readable عند فتح الملف في وضع الكتابة في Python

استخدام read() لقراءة محتوى الملف بالكامل

تُستخدم الدالة read() لقراءة كامل محتوى الملف كنص واحد من النوع string. هذا الأسلوب مناسب عندما يكون الملف صغيرًا أو متوسط الحجم.

file = open("demo.txt")
print(file.read())

قراءة كامل محتوى الملف باستخدام read في Python

قراءة عدد محدد من الأحرف باستخدام read(size)

يمكنك تمرير قيمة عددية إلى read() لقراءة جزء فقط من الملف بدلًا من محتواه الكامل. تمثل هذه القيمة عدد الأحرف المراد قراءتها.

file = open("demo.txt")
print(file.read(4))

قراءة عدد محدد من الأحرف من الملف باستخدام read في Python

إذا لم تُمرر قيمة، أو مررت عددًا سالبًا، فسيتم قراءة الملف كاملًا.

أهمية close() بعد الانتهاء من الملف

بعد الانتهاء من التعامل مع الملف، يُفضل إغلاقه باستخدام close(). إهمال هذه الخطوة قد يؤدي إلى مشاكل في إدارة الموارد، خاصة في البرامج الأكبر أو عند التعامل مع عدد كبير من الملفات.

file = open("demo.txt")
print(file.read())
file.close()

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

لماذا يُفضل استخدام with عند قراءة الملفات؟

أفضل طريقة عملية وآمنة للتعامل مع الملفات في Python هي استخدام الكلمة المفتاحية with. عند استخدامها، يُغلق الملف تلقائيًا بمجرد انتهاء الكتلة البرمجية، حتى لو حدث خطأ أثناء التنفيذ.

with open("demo.txt") as file:
    print(file.read())

هذه الطريقة تُعد من أفضل الممارسات لأنها تجعل الكود أوضح وأكثر موثوقية.

استخدام readline() لقراءة الملف سطرًا واحدًا

إذا كنت لا تريد قراءة الملف بالكامل دفعة واحدة، بل تحتاج إلى سطر واحد فقط في كل مرة، فاستخدم readline(). تعيد هذه الدالة أول سطر متاح من الملف.

لنفترض أن الملف يحتوي على السطرين التاليين:

This is the first line
This is the second line

عند تنفيذ المثال التالي، سيتم طباعة السطر الأول فقط:

with open("demo.txt") as file:
    print(file.readline())

قراءة سطر واحد من الملف باستخدام readline في Python

استخدام size مع readline()

مثل read()، يمكن أيضًا تمرير قيمة إلى readline() لتحديد عدد الأحرف المقروءة من السطر:

with open("demo.txt") as file:
    print(file.readline(7))

قراءة جزء من سطر باستخدام readline مع size في Python

استخدام readlines() لإرجاع جميع الأسطر في قائمة

تُستخدم الدالة readlines() عندما تحتاج إلى قراءة كل أسطر الملف دفعة واحدة وإرجاعها في صورة قائمة list. يكون كل عنصر في القائمة سطرًا مستقلًا من الملف.

with open("demo.txt") as file:
    print(file.readlines())

إرجاع جميع أسطر الملف في قائمة باستخدام readlines في Python

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

قراءة الملف سطرًا بسطر باستخدام for loop

من أكثر الطرق كفاءة ووضوحًا لقراءة ملف نصي في Python استخدام for loop مباشرة على كائن الملف. هذا الأسلوب مناسب جدًا عند التعامل مع ملفات كبيرة، لأنه يقرأ البيانات تدريجيًا بدل تحميلها كاملة في الذاكرة.

with open("demo.txt") as file:
    for item in file:
        print(item)

قراءة الملف سطرًا بسطر باستخدام for loop في Python

إذا كان هدفك هو قراءة ملف نصي سطرًا بسطر بكفاءة، فغالبًا ستكون هذه هي الطريقة الأنسب.

مقارنة سريعة بين طرق قراءة الملفات في Python

الطريقة الوظيفة متى تُستخدم؟
read() قراءة كامل الملف كنص واحد عندما يكون حجم الملف صغيرًا
readline() قراءة سطر واحد فقط عند الحاجة لالتقاط سطر محدد
readlines() قراءة جميع الأسطر داخل قائمة عند معالجة الأسطر كعناصر قائمة
for loop قراءة الملف سطرًا بسطر للكفاءة والوضوح مع الملفات الكبيرة

أفضل الممارسات عند قراءة الملفات النصية

  • استخدم with بدلًا من الاعتماد على close() يدويًا.
  • تأكد من صحة اسم الملف والمسار قبل التشغيل.
  • اختر طريقة القراءة المناسبة حسب حجم الملف.
  • استخدم readline() أو for loop إذا كنت تحتاج إلى القراءة التدريجية.
  • كن حذرًا عند استخدام read() مع الملفات الكبيرة حتى لا تستهلك الذاكرة بشكل غير ضروري.

الخلاصة التقنية

توفر Python واجهة بسيطة وقوية للتعامل مع الملفات النصية، لكن اختيار الطريقة المناسبة يعتمد على حجم الملف وطبيعة المعالجة المطلوبة. من الناحية العملية، يظل استخدام with open(...) مع for loop هو الخيار الأفضل في معظم الحالات، لأنه يجمع بين الأمان، والوضوح، والكفاءة في استهلاك الذاكرة. أما إذا كان الملف صغيرًا وتحتاج إلى محتواه كاملًا دفعة واحدة، فستكون read() كافية ومباشرة.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *