สคริปต์ python เพื่อเปรียบเทียบ 2 ไฟล์โดยไม่สนใจการประทับเวลา


1

ฉันมีล็อกไฟล์ที่สอง: และlog A log Bเนื้อหาของพวกเขาเป็นสิ่งที่ชอบ:

บันทึก

2014-07-12 09:50:33,904 dk,jnbxkmgl,mb.;/lkngjn.....

2014-07-12 09:56:45,060 ;lkjdgzkblnx.m.mc;xgjjjjjj....

2014-07-12 10:00:00,001 uzlk>FFhkshfGBKNMlaL>Djgdkgh....

เข้าสู่ระบบ B

2015-06-12 08:50:33,904 gk;s'ahdsjgkagZCXseiutr....

2015-08-12 07:56:45,060 pisazffksikfdjggdkjhfg...

2015-09-12 10:00:00,001 ffffsajggjaaaaaa.....

ฉันต้องการเปรียบเทียบล็อกไฟล์สองไฟล์ แต่โดยไม่สนใจการประทับเวลาของพวกเขานั่นคือ 20 ตัวอักษรแรกของไฟล์ทั้งสอง ฉันยังใหม่กับ Python ดังนั้นไม่แน่ใจว่าจะเขียนสคริปต์ Python ที่สามารถเปรียบเทียบไฟล์ทั้งสองนี้ได้อย่างไรโดยไม่สนใจการประทับเวลา

คำตอบ:


1

ถ้าประทับเวลามักจะมีรูปแบบเดียวกัน - เช่นเสมอ 20 ตัวอักษรยาวคุณอาจจะไม่สนใจและเปรียบเทียบโดยใช้และlineA[20:]lineB[20:]

ในการรับผลต่างของสองสายคุณสามารถใช้ difflib สำหรับ python รหัสต่อไปนี้นำมาจากคำตอบนี้ใน StackOverflow

import difflib

cases=[('afrykanerskojęzyczny', 'afrykanerskojęzycznym'),
       ('afrykanerskojęzyczni', 'nieafrykanerskojęzyczni'),
       ('afrykanerskojęzycznym', 'afrykanerskojęzyczny'),
       ('nieafrykanerskojęzyczni', 'afrykanerskojęzyczni'),
       ('nieafrynerskojęzyczni', 'afrykanerskojzyczni'),
       ('abcdefg','xac')] 

for a,b in cases:     
    print('{} => {}'.format(a,b))  
    for i,s in enumerate(difflib.ndiff(a, b)):
        if s[0]==' ': continue
        elif s[0]=='-':
            print(u'Delete "{}" from position {}'.format(s[-1],i))
        elif s[0]=='+':
            print(u'Add "{}" to position {}'.format(s[-1],i))    
    print() 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.