كيفية قراءة الملفات في لغة البرمجة بايثون
توفر لغة البرمجة بايثون وظائف مضمنة لإنشاء الملفات وكتابتها وقراءتها. هناك نوعان من الملفات التي يمكن التعامل معها في بايثون وهما الملفات النصية العادية والملفات الثنائية. في هذه المقالة سوف أشرح كيفية قراءة الملفات سطرا بسطر.
1- قراءة الملفات باستخدام readlines
يتم استخدام دالة readlines
لقراءة جميع الأسطر دفعة واحدة ثم
إعادتها باعتبار كل سطر عنصر في قائمة. يمكن استخدام هذه الوظيفة للملفات الصغيرة
حيث تقوم بقراءة محتوى الملف بالكامل على الذاكرة ثم تقسيمه إلى أسطر منفصلة.
يمكننا تكرار القائمة وتجريد السطر الجديد باستخدام وظيفة strip
.
filecontent = ['dev\n', 'cake\n'] # writing in file new_file = open('newfile.txt', 'w') new_file.writelines(filecontent) new_file.close() # Using readlines() file1 = open('newfile.txt', 'r') lines = file1.readlines() count = 0 # Strips the newline character for line in lines: print(f"Line{count}: {line.strip()}") output: Line1: dev Line2: cake
2- قراءة الملفات باستخدام readline
تقرأ الدالة readline
سطرا من الملف وتعيده في شكل
string. وتقبل بقيمة للحجم والذي يحدد الحد الأقصى لعدد البايتات التي
ستتم قراءتها. ومع ذلك لا تقرأ أكثر من سطر واحد حتى لو تجاوز الحجم طول السطر.
ستكون فعالة عند قراءة ملف كبير لأنها بدلا من جلب جميع البيانات دفعة واحدة
فإنها تجلب سطرا بسطر وإذا تم الوصول إلى نهاية الملف فستعيد
string فارغ.
filecontent = ["dev\n", "cake\n"] # Writing to a file new_file = open('myfile.txt', 'w') new_file.writelines(filecontent) new_file.close() # Using readline() file1 = open('myfile.txt', 'r') count = 0 while True: count += 1 # Get next line from file line = file1.readline() # if line is empty # end of file is reached if not line: break print(f"Line{count}: {line.strip()}") file1.close() output: Line1: dev Line2: cake
3- قراءة الملفات باستخدام حلقة التكرار for
يتم إرجاع كائن قابل للتكرار بواسطة الدالة open
أثناء فتح ملف.
ويتم قراءة محتوي الملف سطرا بسطر بواسطة حلقة التكرار for
. وعند
القيام بتلك الطريقة فإننا نوفر سطورا من التعليمات البرمجية وهي دائما أفضل
طريقة تستحق الإستخدام.
filecontent = ["dev\n", "cake\n"] # Writing to a file new_file = open('myfile.txt', 'w') new_file.writelines(filecontent) new_file.close() # Using for loop file1 = open('myfile.txt', 'r') count = 0 for line in file1: count += 1 print(f"Line{count}: {line.strip()}") file1.close() output: Line1: dev Line2: cake
4- قراءة الملفات باستخدام with
في الأساليب السابقة، في كل مرة كان يتم فيها فتح الملف ويلزم إغلاقه بشكل صريح. وإذا نسيت إغلاق الملف فقد يؤدي ذلك إلى ظهور العديد من الأخطاء في الكود أي أن العديد من التغييرات في الملفات لا تدخل حيز التنفيذ حتى يتم إغلاق الملف بشكل صحيح.
لمنع هذا نستخدم with
. وهي عبارة في بايثون تستخدم في معالجة
الاستثناءات لجعل الكود أنظف وأكثر قابلية للقراءة. تبسط إدارة الموارد المشتركة
مثل تدفقات الملفات. لاحظ في الكود التالي حول كيفية استخدام جملة
with
في جعل الكود أكثر نظافة. ليست هناك حاجة لاستدعاء
file.close
عند النهاية.
المثال التالي سنستخدم with
مع readlines
.
filecontent = ["dev\n", "cake\n"] # Writing to a file with open("myfile.txt", "w") as file: file.writelines(filecontent) # using readlines() count = 0 with open("myfile.txt") as file: lines = file.readlines() for line in lines: count += 1 print(f"Line{count}: {line.strip()}") output: Line1: dev Line2: cake
المثال التالي سنستخدم with
مع readline
.
filecontent = ["dev\n", "cake\n"] # Writing to a file with open("myfile.txt", "w") as file: file.writelines(filecontent) # using readlines() count = 0 with open("myfile.txt") as file: while True: count += 1 line = file.readline() if not line: break print(f"Line{count}: {line.strip()}") output: Line1: dev Line2: cake
المثال التالي سنستخدم with
حلقة التكرار for
.
filecontent = ["dev\n", "cake\n"] # Writing to a file with open("myfile.txt", "w") as file: file.writelines(filecontent) # using readlines() count = 0 with open("myfile.txt") as file: for line in file: count += 1 print(f"Line{count}: {line.strip()}") output: Line1: dev Line2: cake
في هذه المقالة ناقشنا كيفية قراءة الملفات في لغة البرمجة بايثون. وإذا كان لديك أي أسئلة أو ملاحظات فلا تتردد في ترك تعليق❤❤.
ادعمنا بتعليق