[英]Find difference between 2 python files
问题陈述是:
给定2个python文件'A.py'和'B.py'(修改后的A.py),有没有一种方法可以找出:
1.新增方法
2.删除方法
3.修改后的方法:(a)方法原型的变更(b)方法内容的变更
对于类(更改/删除/修改)也是如此。
我的解决方案:
我在考虑是否可以使用良好的差异工具,并找出添加/删除/修改的行,因此我可以解析它们以找出所需的详细信息。 我尝试了git-diff,但它给出了逐行比较。 因此,如果某个方法由于在此之前添加了其他方法而发生了转移,则该方法将显示该方法已从原始文件中删除,并在以后的文件中添加了。
我看到'meld'可以很好地区分我可以轻松使用的文件,但是我找不到找到以编程方式捕获Meld输出的方法。
请提供有关我的解决方案或该问题的任何其他解决方案的任何后续措施
仅供参考:我想自动执行此操作,因为有许多此类文件。 另外,这必须在Linux机器上完成。
最简单的方法是使用诸如winmerge之类的合并工具。这将使您能够并排看到两者,并突出显示所有差异。
Git可以做到这一点,请查看github它正是您想要的东西
使用
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
您可以使用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")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.