كيفية قراءة الملفات في لغة البرمجة بايثون

كيفية قراءة الملفات في لغة البرمجة بايثون

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

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

في هذه المقالة ناقشنا كيفية قراءة الملفات في لغة البرمجة بايثون. وإذا كان لديك أي أسئلة أو ملاحظات فلا تتردد في ترك تعليق❤❤.

ادعمنا بتعليق