好的,所以我目前正在处理大型python 2.7代码库,我的当前任务如下:
有两个模块,例如A
和B
,它们具有很多相似的代码(我是说几乎所有方法都是相同的)。我的目标是创建一个Base
模块来包含所有通用代码。
为此,我目前正在手动阅读和比较A
和B
之间的(同名)函数,以查看它们是否相同(甚至相同)< / strong>。
那么有什么办法可以自动化?就像diff
之类的库一样,它用来比较2个python函数代码以告诉我它们的内容是否相同/几乎相同?
例如,目前我正在研究2个模块ResourceStatusDB.py
和ResourceStatusManagement.py
:
ResourceStatusDB.py
class ResourceManagementDB(BaseRSSDB):
.
.
.
def select(self, table, params):
session = self.sessionMaker_o()
XYZ()
# finding the table
found = False
for ext in self.extensions:
try:
table_c = getattr(__import__(ext + __name__, globals(), locals(), [table]), table)
found = True
break
except (ImportError, AttributeError):
continue
# If not found in extensions, import it from DIRAC base (this same module).
if not found:
table_c = getattr(__import__(__name__, globals(), locals(), [table]), table)
和 ResourceStatusManagement.py def select(自我,表格,参数):
session = self.sessionMaker_o()
# finding the table
found = False
for ext in self.extensions:
try:
table_c = getattr(__import__(ext + __name__, globals(), locals(), [table]), table)
found = True
break
except (ImportError, AttributeError):
continue
# If not found in extensions, import it from DIRAC base (this same module).
if not found:
table_c = getattr(__import__(__name__, globals(), locals(), [table]), table)
请注意,这两个功能并不完全相同。 (可能会有几行的差异)。但是,大多数逻辑在功能级别上是相同的。有什么办法检测到这个吗?
答案 0 :(得分:1)
我认为问题与python无关; P
如果您安装了插件,Notepad ++可以进行比较 您可以使用winmerge进行文件比较
在同步文件夹中的总指挥官也具有用于比较和修改的默认工具。
我认为最好采用winmerge。