问题陈述是:
鉴于2个python文件'A.py'和'B.py'(修改后的A.py),有没有办法可以找到:
1.增加方法
2.删除方法
3.修改方法:(a)方法原型的变化(b)方法内容的变化
类似于类(更改/删除/修改)。
我的解决方案:
我在想是否可以使用一个好的差异工具,并找出添加/删除/修改的行,我可以解析它们以找出所需的详细信息。 我尝试使用git-diff,但它提供了行式差异。因此,如果某个方法因为之前添加了其他方法而被移位,则会将该方法显示为从原始文件中删除并添加到以后的文件中。
我看到'meld'在我可以轻松使用的文件之间提供了很好的差异,但我找不到以编程方式捕获融合输出的方法。
请提供有关我的解决方案或问题的任何其他解决方案的任何跟进
仅供参考:我想自动化这个,因为有很多这样的文件。此外,这必须在Linux机器上完成。
答案 0 :(得分:0)
最简单的方法是使用合并工具,例如winmerge 这将使您能够并排看到两个并且将突出显示任何差异。
答案 1 :(得分:0)
Git可以做到这一点,请查看github的确切内容
答案 2 :(得分:0)
使用
unix中的
sdiff File1 File2
命令 我们可以找到两个文件之间的区别。
例如:如果我们更改添加模块然后比较两个文件 更改将以> 符号
显示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")