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

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

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

أوضاع التعامل مع الملفات في لغة بايثون

قبل البدء لا بد لنا أن نتعرف على أوضاع التعامل مع الملفات لغة البرمجة البايثون سواء للقراءة أو الإنشاء و الكتابة. سيلخص الجدول التالي تلك الأوضاع بشكل موجز قبل استخدامها في برامجنا.

الوضعوظيفة الوضع
rلفتح الملف بوضع القراءة فقط و يكون المؤشر واقفا على بداية الملف
wلفتح الملف بوضع الكتابة فقط. بحيث إذا فتح ملف موجود ستقوم بايثون بمسح ما هو مكتوب بالملف و الكتابة فوقه. و اذا لم يكن اسم الملف المراد فتحه موجودا ستقوم بايثون بإنشائه أوتوماتيكيا للكتابة عليه
aلفتح الملف بوضع الإضافة. أي إذا كان الملف موجودا و يحتوي على معلومات بداخله ، ستقوم بايثون بإضافة معلومات على المعلومات الموجودة دون محوها.و يكون المؤشر واقفا بنهاية الملف
rbلفتح الملف بوضع القراءة بالوضع الثنائي (Binary)
wbلفتح الملف بوضع الكتابة بالوضع الثنائي (Binary)
apلفتح الملف بوضع الإضافة بالوضع الثنائي (Binary)
a+لفتح الملف بوضع الإضافة للقراءة و الكتابة
w+لفتح الملف بوضع الكتابة للقراءة و الكتابة
r+لفتح الملف بوضع  للقراءة و الكتابة بنفس الوقت
ab+لفتح الملف بوضع الإضافة الثنائي للقراءة و الكتابة
wb+لفتح الملف بوضع الكتابة الثنائي للقراءة و الكتابة
rb+لفتح الملف بوضع القراءة الثنائي للقراءة و الكتابة

انشاء ملف بوضع الكتابة في لغة بايثون

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

# creating a file in writing mode
f = open("myfile.txt","w")

# closing the file
f.close()

سنجد أن بايثون ستنشئ لنا ملفا نصيا إسمه myfile.txt بوضع الكتابة عليه.

لنعدل برنامجنا ليكتب على الملف الذي انشأناه سابقا للكتابة عليه.

# creating a file in writing mode
f = open("myfile.txt","w")

# reading text from the user
txt = input("type something >>> ")

# writing the text to the file
f.write(txt)


# closing the file
f.close()

سنجد أن البيانات النصية التي أدخلها سيتم كتابتها على الملف النصي بنجاح.

ممتاز .. والآن لنقم بإنشاء ملف نصي باسم myfile.txt يحتوي النص التالي ليكون جاهزا للمهارة التالية.

Pythonat.com #1
is the number one arabic python blog
where you can find
anything
related to python programming

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

والآن لنكتب برنامجا يقرأ جميع محتويات الملف النصي دفعة واحدة ثم يطبعها على الشاشة

# opening file in reading mode
rf = open("myfile.txt",'r')

# reading whole file as a chunk into a variable
data = rf.read()

# printing read data
print(data)
rf.close()

توجد لدى بايثون وظيفة مفيدة لقراءة محتويات الملف على شكل أسطر متفرقة. لنقم بتعديل البرنامج السابق ليكون كالتالي:

# opening file in reading mode
rf = open("myfile.txt","r")

# reading lines from the file and print them one by open
for line in rf.readlines():
 print(line)


rf.close()

لنستخدم الآن وضع الإضافة بالبرنامج التالي ليقوم المستخدم بإدخال نص يتم إضافته على الملف النصي السابق دون محو محتوياته الأصلية.

# opening file in appending mode
rf = open("myfile.txt",'a')

txt = input(">>> ")
rf.write(txt)

rf.close()

التعامل مع الملفات من خلال جملة with

لنكتب الآن برنامجا نستفيد فيه من خاصية قراءة و كتابة البيانات الثنائية مع استخدام مهارة الإغلاق التلقائي للملفات المفتوحة باستخدام with.

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

لنقم بكتابة برنامج يقوم بعمل نسخة من ملف ثنائي مثل صورة أو ملف فيديو.

# with statement automatically closes the opened "source" file
with open("pic.jpeg",'rb') as rpic:

 # creatiرg a file in writing binary mode
 wpic = open("write_pic.jpeg","wb")

 # reading all binary data from source picture
 read_data = rpic.read()
  # writing binary data to target file
 wpic.write(read_data)

 # closing target file
 wpic.close()

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

 

 

اترك تعليقاً

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