البرمجة

قراءة وحساب الفرق الزمني بين سطرين في ملف نصي باستخدام Python

في عالم البرمجة ومعالجة الملفات النصية، يعد قراءة القيم الرقمية من ملف يحتوي على سلاسل نصية تحديًا يتطلب فهمًا جيدًا للتعامل مع النصوص والتحقق من هيكلها. في مشكلتك، تقول أن لديك ملف نصي يحتوي على N سطر، وترغب في قراءة قيم محددة في السطر رقم 8 والسطر رقم 16.

للقراءة من الملف، يمكنك استخدام الكود التالي:

filename = 'اسم_الملف.txt'

with open(filename, 'r') as txt:
    lines = txt.readlines()

line_8 = lines[7].split()[1]  # قراءة السطر رقم 8 واستخراج القيمة المطلوبة
line_16 = lines[15].split()[1]  # قراءة السطر رقم 16 واستخراج القيمة المطلوبة

# تحويل القيم إلى تنسيق مناسب للعمليات الحسابية
time_8 = datetime.strptime(line_8, '%H:%M:%S.%f').time()
time_16 = datetime.strptime(line_16, '%H:%M:%S.%f').time()

# قيام بالعملية الحسابية للفرق بين الزمنين
time_difference = datetime.combine(date.today(), time_16) - datetime.combine(date.today(), time_8)

print(f"The time difference is: {time_difference}")

هذا الكود يستخدم `readlines()` لقراءة جميع الأسطر في الملف وتخزينها في قائمة. ثم يستخدم فهرس القائمة للوصول إلى السطر الثامن والسابع عشر. يتم استخدام `split()` لتقسيم السطر واستخراج القيمة المطلوبة.

بعد ذلك، يتم تحويل القيم إلى تنسيق مناسب باستخدام `datetime.strptime()` لتسهيل العمليات الحسابية. أخيرًا، يتم حساب الفرق بين الزمنين وطباعته.

هذا الكود يوفر لك طريقة فعالة لقراءة واستخراج البيانات من الملف النصي وإجراء العمليات الحسابية المطلوبة بسهولة.

المزيد من المعلومات

عند التعامل مع ملفات النصوص في بيئة برمجة، من المهم فهم كيفية قراءة ومعالجة البيانات بشكل فعال. في الكود السابق، تم استخدام بنية التحكم `with open(…) as …` لضمان إغلاق الملف بشكل صحيح بعد القراءة، مما يساعد في تجنب مشاكل الأداء والتسريبات الذاكرية.

يمكنك أيضًا تحسين أداء الكود عند قراءة النصوص من الملف عبر استخدام حلقة for مباشرة دون استخدام readlines()، كما يظهر في الكود التالي:

filename = 'اسم_الملف.txt'

with open(filename, 'r') as txt:
    for i, line in enumerate(txt, 1):
        if i == 8 or i == 16:
            time_value = line.split()[1]
            time_obj = datetime.strptime(time_value, '%H:%M:%S.%f').time()
            print(f"Time value in line {i}: {time_obj}")

هذا الكود يستخدم حلقة `for` مباشرة لقراءة النصوص من الملف وفحص السطور الذين تحتاج إليهم (السطر 8 والسطر 16 في هذه الحالة). يتم استخدام `enumerate` للحصول على رقم السطر في كل تكرار، مما يجعل من السهل تحديد السطور المطلوبة.

بهذا الشكل، يتيح لك الكود تحقيق أداء أفضل وتوفير الذاكرة عند التعامل مع ملفات نصية كبيرة. تذكير بأهمية فحص وتنظيف البيانات قبل الاعتماد عليها لضمان دقة النتائج.

مقالات ذات صلة

زر الذهاب إلى الأعلى

هذا المحتوى محمي من النسخ لمشاركته يرجى استعمال أزرار المشاركة السريعة أو تسخ الرابط !!