• 0

كيف يمكنني القفز إلى سطر معين في ملف نصي في بايثون؟

لدي ملف نصي يبلغ حجمه 1 جيجابايت، وأريد القفز إلى سطر معين دون أن أضطر إلى قراءة كامل الملف، فهل يمكنني فعل ذلك؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

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

# Read in the file once and build a list of line offsets
line_offset = []
offset = 0
for line in file:
    line_offset.append(offset)
    offset += len(line)
file.seek(0)

# Now, to skip to line n (with the first line being line 0), just do
file.seek(line_offset[n])

كما يمكنك أيضا استخدام وحدة linecache والتي تسمح لك بالحصول على أي سطر من أي ملف لكنها للأسف كما قلنا سابقا تحتاج على الأقل لقراءة الملف مرة واحدة لذلك ستقوم هذه الوحدة بتحميل الملف في الذاكرة.
مثال على استخدام الدالة:

>>> import linecache
>>> linecache.getline('/etc/passwd', 4)
'sys:x:3:3:sys:/dev:/bin/sh\n'

المصدر

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن