Python/linecache
تتيح وحدة 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