معالجة الملفات في بايثون
يمكن معالجة الملفات في بايثون باستخدام العديد من الوظائف والمكتبات المتاحة في لغة البرمجة بايثون. يمكن استخدام دالة open() لفتح ملف وقراءة محتوياته أو كتابة محتويات جديدة إليه. على سبيل المثال، يمكن استخدام الشفرة التالية لفتح ملف نصي وطباعة محتوياته:
file = open("example.txt", "r")
print(file.read())
file.close()
يمكن تغيير وضع الفتح إذا كان الملف يتطلب الكتابة أو الإضافة. على سبيل المثال، يمكن استخدام الشفرة التالية لفتح ملف وكتابة سطر جديد فيه:
file = open("example.txt", "a")
file.write("This is a new line.")
file.close()
وبالإضافة إلى ذلك، تحتوي بايثون على مكتبات أخرى تساعد في معالجة الملفات مثل Pandas و Numpy و csv وغيرها.
دالة open في بايثون
دالة open في بايثون تستخدم لفتح ملف وإرجاع كائن الملف المرتبط به، حيث يمكنك استخدام الكائن المُرجَع للقراءة أو الكتابة على الملف المفتوح. وهي متاحة دائمًا كجزء من الوحدة الأساسية (built-in) في بايثون.
فيما يلي بعض الأمثلة على كيفية استخدام الدالة open():
- قراءة ملف:
f = open('example.txt', 'r')
content = f.read()
print(content)
f.close()
- كتابة على ملف:
f = open('example.txt', 'w')
f.write('Hello World!')
f.close()
- إضافة نص إلى نهاية ملف:
f = open('example.txt', 'a')
f.write('\nThis is a new line.')
f.close()
- قراءة ملف بشكل آمن:
with open('example.txt', 'r') as f:
content = f.read()
print(content)
# لا حاجة لإغلاق الملف بعد استخدام with statement
بنية الدالة open في بايثون
دالة open() في بايثون تستخدم لفتح ملف وإرجاع كائن file object. يستخدم هذا الكائن لقراءة أو كتابة الملف.
بنية open() في بايثون:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
- - file : اسم الملف لفتحه (string).
- - mode : نمط الفتح، يتم تحديده كـ string. القيم الشائعة: 'r' (للقراءة فقط)، 'w' (للكتابة فقط)، و 'a' (للإضافة إلى نهاية الملف).
- - buffering : حجم البيانات التي يجب قراءتها/كتابتها في كل مرة.
- - encoding : ترميز الملف (مثل 'utf-8' ).
- - errors : ما يجب فعله في حالة حدوث خطأ في الترميز (عادة 'strict' ).
- - newline : نوع نهاية السطر المستخدمة عند الكتابة (مثل '\n' ).
- - closefd : ما إذا كان يجب إغلاق الملف بعد الانتهاء من استخدامه (افتراضيًا True ).
- - opener : دالة يمكن استدعاؤها لفتح الملف بدلاً من الدالة الافتراضية.
مثال:
# فتح ملف للقراءة
f = open('example.txt', 'r')
# قراءة المحتوى
content = f.read()
# إغلاق الملف
f.close()
في هذا المثال تم فتح الملف "example.txt" للقراءة باستخدام النمط 'r' ثم تم قراءة محتواه باستخدام الدالة read() وأخيرًا تم إغلاق الملف باستخدام الدالة close() .
ال mode الخاصه بدالة open
دالة open() في بايثون تستخدم لفتح الملفات، ويمكن استخدامها بعدة أوضاع "modes" مختلفة. يمكن تحديد الوضع المطلوب باستخدام الأحرف التالية:
- 'r' : فتح الملف للقراءة (الوضع الافتراضي).
- 'w' : فتح الملف للكتابة. إذا كان الملف موجودًا سيتم حذف محتوياته السابقة وإذا كان غير موجود سيتم إنشاؤه.
- 'x' : فتح الملف للكتابة فقط إذا كان غير موجود. إذا كان الملف موجودًا فسيتم رفض الوصول.
- 'a' : فتح الملف للكتابة بشكل إضافي (أي إضافة المحتوى الجديد إلى نهاية الملف).
- 'b' : فتح الملف في الوضع الثنائي (binary mode).
- 't' : فتح الملف في الوضع النصي (text mode)، وهو الوضع الافتراضي.
يمكن دمج هذه الأحرف للحصول على وضع محدد. على سبيل المثال، يمكن استخدام 'wb' لفتح الملف في الوضع الثنائي والكتابة عليه.
وإذا لم يتم تحديد وضع، فسيتم افتراض الوضع النصي للقراءة ( 'rt' ).
دوال القراءة و الكتابة في الملفات
يتم استخدام دوال القراءة والكتابة للتعامل مع الملفات في بايثون، حيث يمكن فتح الملف وقراءته أو كتابة بيانات جديدة إليه.
لفتح الملف، يمكن استخدام الدالة open() وتحديد الوضعية المطلوبة (القراءة أو الكتابة)، على سبيل المثال:
# لفتح ملف للقراءة
file = open('example.txt', 'r')
# لفتح ملف للكتابة
file = open('example.txt', 'w')
بعد ذلك، يمكن استخدام دوال القراءة والكتابة للتعامل مع الملف.
- دالة القراءة:
- read() : تستخدم لقراءة الملف بأكمله.
- readline() : تستخدم لقراءة سطر واحد من الملف.
- readlines() : تستخدم لقراءة جميع السطور في الملف ووضعها في قائمة.
- دالة الكتابة:
- write() : تستخدم لكتابة سلسلة نصوص إلى الملف.
- writelines() : تستخدم لكتابة قائمة من السطور إلى الملف.
عند الانتهاء من التعامل مع الملف، يجب إغلاقه باستخدام دالة close() :
file.close()
ويفضل استخدام البنية التالية لفتح الملف وقراءته أو كتابته:
with open('example.txt', 'r') as file:
# Code to read the file
with open('example.txt', 'w') as file:
# Code to write to the file
يتم ضمان إغلاق الملف تلقائياً بعد انتهاء الكود الموجود داخل الدالة.
دالة read في بايثون
دالة read في بايثون تستخدم عادة لقراءة ملفات النصوص. يمكن استخدام هذه الدالة لقراءة محتوى ملف نصي بشكل كامل أو جزئي، حسب الحاجة.
لأجل استخدام الدالة، يجب فتح الملف النصي أولا باستخدام دالة open() التي تأخذ اسم الملف والوضعية (read) كمدخلات.
ومن ثم يمكن استخدام الدالة read() لقراءة محتوى الملف. ستقوم الدالة بإرجاع النص كمجموعة من الأحرف.
فيما يلي مثال بسيط عن استخدام الدالة:
file = open('example.txt', 'r')
text = file.read()
print(text)
file.close()
يفتح هذا الكود ملفًا يسمى "example.txt" في وضع "r" أو القراءة، ويستخدم الدالة read() لقراءة محتوى الملف بالكامل. ثم يتم إغلاق الملف بعد الانتهاء من العمل به.
دالة readline و readlines
دالة readline() تستخدم في قراءة سطر واحد من ملف نصي في بايثون. يتم استخدامها عادةً مع دالة open() لفتح الملف وإعادة البيانات النصية الموجودة في الملف.
هذا هو مثال بسيط لاستخدام دالة readline() :
with open('example.txt', 'r') as f:
line = f.readline()
print(line)
هذا المثال يقوم بفتح الملف "example.txt" ثم يستخدم readline() لقراءة السطر الأول في الملف ويتم طباعته.
أما دالة readlines() ، فهي تستخدم لقراءة جميع الأسطر في الملف وحفظها في قائمة list. وتستخدم هذه الدالة عادةً مع دالة open() لفتح الملف وإعادة البيانات النصية الموجودة في الملف.
هذا هو مثال بسيط لاستخدام دالة readlines() :
with open('example.txt', 'r') as f:
lines = f.readlines()
for line in lines:
print(line)
هذا المثال يقوم بفتح الملف "example.txt" ثم يستخدم readlines() لقراءة جميع الأسطر في الملف وحفظها في قائمة list، ثم يتم طباعة كل سطر في القائمة.
دالة write و writelines
دالة write و writelines تستخدمان في لغة Python للكتابة على الملفات.
- - write : تُستخدم للكتابة على الملف، حيث يتم تمرير النص الذي تريد كتابته إلى الدالة بعد فتح الملف باستخدام الوضعية الصحيحة. على سبيل المثال، إذا كنت تريد كتابة "Hello World" في الملف "example.txt"، يمكن استخدام الكود التالي:
file = open('example.txt', 'w')
file.write('Hello World')
file.close()
- - writelines : تستخدم لكتابة قائمة من النصوص في الملف. يجب أن يتم تمرير القائمة إلى الدالة بعد فتح الملف باستخدام الوضعية الصحيحة. على سبيل المثال، إذا كنت تريد كتابة قائمة تحتوي على اسماء الأشخاص في الملف "names.txt"، يمكن استخدام الكود التالي:
names = ['John', 'Sarah', 'Mike']
with open('names.txt', 'w') as f:
f.writelines([name + "\n" for name in names])
تُستخدم الدالتان write و writelines في العديد من سيناريوهات البرمجة حيث يتعين عليك كتابة بيانات إلى ملف.
خصائص ترجعها دالة open
دالة open() في بايثون تستخدم لفتح ملف وإعادة كائن يمكن استخدامه للقراءة أو الكتابة على الملف. ترجع الدالة كائن "file object"، والذي يحتوي على العديد من الخصائص، بما في ذلك:
- name : اسم الملف.
- mode : وضع فتح الملف (قراءة، كتابة، إضافة...).
- encoding : الترميز المستخدم لفتح الملف.
- buffering : حجم البيانات المؤقتة المستخدمة لمعالجة البيانات داخل وخارج الملف.
- newline : نمط السطر المستخدم داخل الملف (CRLF، LF، CR).
- closed : حقل يحدد ما إذا كان الملف مغلقًا أم لا.
- errors : كيفية التعامل مع الأخطاء في حالة حدوثها.
بإمكان المستخدم الوصول إلى هذه الخصائص باستخدام العبارة:
file_object.property_name
مثال علئ ارجاع خصائص دالة open
تستخدم دالة open في بايثون لفتح ملف والقيام بعمليات القراءة والكتابة عليه. يمكن الاطلاع على خصائص الدالة باستخدام الدالة المدمجة dir() وذلك باستدعاءها على الكائن الناتج عن استخدام الدالة open .
هذا هو مثال على كيفية استخدام دالة dir() للحصول على الخصائص المتاحة لـ open :
f = open('file.txt', 'r')
print(dir(f))
ستظهر لك قائمة من الخصائص، ومنها:
- - closed : يشير إلى ما إذا كان الملف مغلقًا أم لا.
- - mode : يعرض نوع الوضع الذي تم فتح الملف به.
- -name : اسم الملف.
يمكن الوصول إلى هذه الخصائص باستخدام النقطة "." مثل هذا:
print(f.closed)
print(f.mode)
print(f.name)
ستقوم هذه الأسطر بطباعة قيم الخصائص الخاصة بالملف الذي تم فتحه.