بايثونالدالة seek()
تعريفها
أثناء القراءة من الملف عن طريق الكائن الذي يمثل هذا الملف، يمكن إستخدام هذه الدالة للرجوع إلى الوراء في الملف لقراءة الملف من جديد على سبيل المثال.
بناؤها
seek(offset, from_what=0)
باراميترات
from_what
هو باراميتر إختياري، مكانه يمكن تمرير إحدى الأرقام التالية:- الرقم 0 للرجوع إلى أول حرف في الملف.
- الرقم 1 للبقاء عند حرف الحالي الذي وصلت إليه في الملف.
- الرقم 2 للذهاب إلى آخر حرف في الملف.
offset
هو باراميتر إختياري، مكانه يمكن تمرير عدد يمثل بعد كم حرف نسبة للباراميترfrom_what
نريد البدء.
قيمة الإرجاع
لا ترجع قيمة.
في المثال التالي قمنا باستخدام الدالة seek()
للعودة إلى أول الملف بعد أن كنا قد قمنا بقراءة بعد الأحرف منه.
مثال
# للإشارة إلى أننا سنستخدم هذا الكائن لقراءة النص الموجود في الملف 'r' و وضعنا الرمز 'demo.txt' هنا قمنا بإنشاء كائن يشير لملف إسمه opened_file = open('demo.txt', 'r') # الذي يشير للملف المفتوح حتى ترجع أول 10 أحرف موجودة في النص, بعدها قمنا بطباعة النص الذي سترجعه opened_file من الكائن read() هنا قمنا باستدعاء الدالة print('Characters read:', opened_file.read(10)) # من جديد read() هنا قمنا بطباعة رقم الحرف الذي سيتم الطباعة من بعده عند استدعاء الدالة print('Current file position:', opened_file.tell()) # و تمرير القيمتين 0 و 0 لها للرجوع إلى الحرف الأول في الملف opened_file من الكائن seek() هنا قمنا باستدعاء الدالة opened_file.seek(0, 0) # من جديد read() هنا قمنا بطباعة رقم الحرف الذي سيتم الطباعة من بعده عند استدعاء الدالة print('Current file position:', opened_file.tell()) # الذي يشير للملف المفتوح حتى ترجع نفس الـ 10 أحرف السابقة، بعدها قمنا بطباعة النص الذي سترجعه opened_file من الكائن read() هنا قمنا باستدعاء الدالة print('Characters read again:', opened_file.read(10)) # لإغلاق الإتصال مع الملف المفتوح في الذاكرة opened_file من الكائن close() هنا قمنا باستدعاء الدالة opened_file.close()
النتيجة: بعدما قرأنا أول 10 أحرف في الملف demo.txt
عدنا لبداية الملف من جديد بواسطة الدالة seek()
و قرأناها من جديد على النحو التالي.
Current file position: 10
Current file position: 0
Characters read again: Self study
نلاحظ أن رقم فهرس الحرف الحالي الذي وصلنا إليه في المرة الأولى كان 10 و لكنه بعد أن قمنا باستدعاء الدالة seek(0,0)
و إعادة طباعة رقم فهرس الحرف الحالي فإنه عاد إلى الحرف الأول في الملف و الذي يملك الفهرس رقم 0.
في هذا المثال إفترضنا أن المشروع كان يحتوي على ملف إسمه demo.txt
بجانب ملف البايثون و فيه النص الذي ظهر في النتيجة.