الفرق بين المراجعتين لصفحة: «Python/linecache»

من موسوعة حسوب
 
سطر 24: سطر 24:
[https://pymotw.com/2/linecache/ الوحدة <code>linecache</code> في موقع "وحدة بايثون لهذا الأسبوع"]
[https://pymotw.com/2/linecache/ الوحدة <code>linecache</code> في موقع "وحدة بايثون لهذا الأسبوع"]


<span> </span>
<span> </span>الشيفرة المصدرية للوحدة <code>[https://github.com/python/cpython/blob/3.7/Lib/linecache.py linecache]</code>


الشيفرة المصدرية للوحدة <code>[https://github.com/python/cpython/blob/3.7/Lib/linecache.py linecache]</code>
[https://www.youtube.com/watch?v=FijFjiofkfY مقطع شرح للوحدة في اليوتيوب]

المراجعة الحالية بتاريخ 09:47، 24 أغسطس 2018

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

يُستخدم التابع tokenize.open لفتح الملفات، وهذا التابع يستخدم tokenize.detect_encoding لقراءة ترميز الملف في حال غياب الرمز الخاص بالترميز المستخدم، ويُعتبر الترميز الافتراضي للملفات هو UTF-8.

مُلاحظة: تستخدم هذه الوحدة داخليًّا ضمن بايثون في الغالب حيث يتم استدعاء توابعها كلما كان هناك حاجة إلى إظهار رسالة خطأ في بيئة مفسر بايثون.

الاستخدام الأساسي

تُستخدم التوابع المعرّفة ضمن الوحدة linecache مباشرة دون الحاجة إلى إنشاء كائن منها.

توابع الوحدة linecache

التابع linecache.getline

يعيد السطر المُحدد رقمُه في المعاملات الممرة كسلسلة نصية، ويعيد سلسلة نصية فارغة إن حدث أي خطأ.

التابع linecache.clearcache

يمحو الكاش المحفوظ فيه جميع المحتويات الخاصة بالملفات المقروءة مسبقًا.

التابع linecache.checkcache

يتحقق التابع من صلاحية محتوى الكاش بمقارنته بالملفات الأصلية، للتأكد من عدم اختلاف محتوى الملف الحقيقي عن المحتوى الموجود في الكاش.

التابع linecache.lazycache

يحصل هذا التابع على المعلومات الكافية عن وحدة غير معتمدة على الملف" non-file-based" بحيث تكون جاهزة لقراءة أسطرها لاحقًا، مما يسمح بتجنب عمليات الكتابة والقراءة إلى حين وجود حاجة حقيقية لقراءة السطر المطلوب.

مثال

>>> import linecache
>>> linecache.getline(linecache.__file__, 8)
'import sys\n'

المراجع

الوحدة linecache في موقع "وحدة بايثون لهذا الأسبوع"

الشيفرة المصدرية للوحدة linecache

مقطع شرح للوحدة في اليوتيوب