找出2个python文件之间的区别

时间:2015-01-06 09:50:21

标签: python scripting diff

问题陈述是:

鉴于2个python文件'A.py'和'B.py'(修改后的A.py),有没有办法可以找到:

1.增加方法

2.删除方法

3.修改方法:(a)方法原型的变化(b)方法内容的变化

类似于类(更改/删除/修改)。

我的解决方案:

我在想是否可以使用一个好的差异工具,并找出添加/删除/修改的行,我可以解析它们以找出所需的详细信息。 我尝试使用git-diff,但它提供了行式差异。因此,如果某个方法因为之前添加了其他方法而被移位,则会将该方法显示为从原始文件中删除并添加到以后的文件中。

我看到'meld'在我可以轻松使用的文件之间提供了很好的差异,但我找不到以编程方式捕获融合输出的方法。

请提供有关我的解决方案或问题的任何其他解决方案的任何跟进

仅供参考:我想自动化这个,因为有很多这样的文件。此外,这必须在Linux机器上完成。

4 个答案:

答案 0 :(得分:0)

最简单的方法是使用合并工具,例如winmerge 这将使您能够并排看到两个并且将突出显示任何差异。

答案 1 :(得分:0)

Git可以做到这一点,请查看github的确切内容

答案 2 :(得分: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

答案 3 :(得分: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")