2016-03-09 2 views
0

Я пытаюсь найти разницу между двумя текстовыми файлами с использованием difflib в Python. Я могу печатать текст, который был добавлен или удален в новом файле. Но я хочу напечатать, в какой строке была сделана модификация. Хотя я знаю, как подсчитать количество строк в файле, я не могу распечатать строки, которые были добавлены или удалены. Мой код здесь:Печать числа строк в файле python difflib

import difflib 
import time 


def get_diff(old_file, new_file): 
    f1 = open(old_file, 'r') 
    f2 = open(new_file, 'r') 

    old_file = f1.readlines() 
    new_file = f2.readlines() 

    diff = difflib.unified_diff(old_file, new_file, lineterm='') 
    lines = list(diff)[2:] 
    added = [lineA for lineA in lines if lineA[0] == '+'] 


    with open("output.txt", "w") as fh1: 
    for line in added: 
     fh1.write(line) 
    print '+',added 
    removed = [lineB for lineB in lines if lineB[0] == '-'] 
    with open("output.txt", "a") as fh1: 
    for line in removed: 
     fh1.write(line) 
    print '-',removed 


if __name__ == '__main__': 
    fh = get_diff("ex.txt","ex2.txt") 

Спасибо заранее :)

ответ

0

unified diff уже содержит информацию о различных линиях:

--- before.py 
+++ after.py 
@@ -1,4 +1,4 @@ 
-bacon 
-eggs 
-ham 
+python 
+eggy 
+hamster 
guido 

Третья линия @@ -1,4 +1,4 @@ говорит вам расположение изменения ,

+0

Хозяин Вы можете объяснить это? Я не понял, как читать эти цифры –

+0

См. Https://en.wikipedia.org/wiki/Diff_utility#Unified_format –

+0

Hom Спасибо вам :) –

 Смежные вопросы

  • Нет связанных вопросов^_^