2015-01-06 2 views
0

Постановка задачи:разница между Find 2 питона файлов

Учитывая 2 Python файлы 'A.py' и 'B.py' (модифицированный A.py), есть способ, которым мы можем выяснить:

1.Added методы

2.Removed методы

3.Modified методы: (а) изменение в способе прототипа (б) Изменение в содержании метода

Аналогично для классов (изменено/убр ed/modified).

Мое решение:

Я думал, если я мог бы использовать хороший инструмент сравнения, и выяснить, добавленные/удаленные/измененные строки, я могу разобрать их, чтобы выяснить необходимые детали. Я пробовал с git-diff, но это дает линейную разницу. Поэтому, если метод был смещен, потому что ранее был добавлен какой-то другой метод, он показывает метод как удаленный из исходного файла и добавленный в более поздний файл.

Я видел, что «meld» дает хороший diff между файлами, которые я мог бы использовать легко, но я не мог найти способ программно захватить вывод meld.

Просьба представить любые последующие на мое решение, или любое другое решение проблемы

FYI: Я хочу, чтобы автоматизировать этот процесс, поскольку есть много таких файлов. Кроме того, это должно быть сделано в Linux-окне.

ответ

0

Самый простой способ сделать это - использовать инструмент слияния, такой как winmerge Это позволит вам видеть два бок о бок, и любые различия будут выделены.

0

Git может сделать это, проверить GitHub его именно то, что вы ищете

0

Использование

sdiff File1 File2

команды в UNIX мы можем найти разницу между двумя файлами.

например: если мы изменим модуль добавления, а затем сравнить два файла изменения будут отображаться с > символ

def add(x,y):       def add(x,y): 
            >  print x,y 
    return x+y        return x+y 

def subtract(x, y):      def subtract(x, y): 
    return x-y        return x-y 

def multiply(x, y):      def multiply(x, y): 
    return x*y        return x*y 
class MyFuncs:       class MyFuncs: 

    def divide(self,x, y):      def divide(self,x, y): 
     return x/y        return x/y 
0

Вы можете использовать модуль difflib:

from difflib import ndiff 

with open("a.py") as a, open("b.py") as b: 
    for dif in ndiff(a.readlines(),b.readlines()): 
     print(dif) 


- def foobar(): 

+ def foobar1(): 

?   + 

- a = 3 

?  ^

+ a = 22 

?  ^^ 

- b = 4 

+ b = 44 

?  + 

    print("foo") 
Смежные вопросы