Programming Basics SQL HTML CSS JavaScript React Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Linux Learn Typing

بايثونالدالة seek()

تعريفها

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


بناؤها

seek(offset, from_what=0)
seek(offset, from_what=0)

باراميترات

  • from_what هو باراميتر إختياري، مكانه يمكن تمرير إحدى الأرقام التالية:
    • الرقم 0 للرجوع إلى أول حرف في الملف.
    • الرقم 1 للبقاء عند حرف الحالي الذي وصلت إليه في الملف.
    • الرقم 2 للذهاب إلى آخر حرف في الملف.
  • offset هو باراميتر إختياري، مكانه يمكن تمرير عدد يمثل بعد كم حرف نسبة للباراميتر from_what نريد البدء.

قيمة الإرجاع

لا ترجع قيمة.


في المثال التالي قمنا باستخدام الدالة seek() للعودة إلى أول الملف بعد أن كنا قد قمنا بقراءة بعد الأحرف منه.

مثال

Test.py
# للإشارة إلى أننا سنستخدم هذا الكائن لقراءة النص الموجود في الملف '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()
# للإشارة إلى أننا سنستخدم هذا الكائن لقراءة النص الموجود في الملف '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() و قرأناها من جديد على النحو التالي.

Characters read: Self study
Current file position: 10
Current file position: 0
Characters read again: Self study

نلاحظ أن رقم فهرس الحرف الحالي الذي وصلنا إليه في المرة الأولى كان 10 و لكنه بعد أن قمنا باستدعاء الدالة seek(0,0) و إعادة طباعة رقم فهرس الحرف الحالي فإنه عاد إلى الحرف الأول في الملف و الذي يملك الفهرس رقم 0.

في هذا المثال إفترضنا أن المشروع كان يحتوي على ملف إسمه demo.txt بجانب ملف البايثون و فيه النص الذي ظهر في النتيجة.