自动比较 2 python 个代码
Compare 2 python codes automatically
好的,所以我目前正在处理大型 python 2.7 代码库,我当前的任务如下:
有 2 个模块 A
和 B
,它们有很多相似的代码(我的意思是几乎所有的方法都是相同的)。我的目标是创建一个 Base
模块来包含所有通用代码。
为此,我目前正在手动读取和比较 A
和 B
与 之间的(同名)函数,看看它们是否相同(甚至几乎相同) )或不.
那么有什么方法可以自动执行此操作吗?就像 diff
这样的库,它是用来比较 2 个 python 函数代码来告诉我它们的内容是否 same/almost 相同?
例如,目前我正在研究 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(self, table, 参数):
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)
Notice that the 2 functions are not exactly the same. (A difference of a few lines maybe possible). But still a majority of the logic is same at the function level. Any way to detect this?
问题在我看来不是python-related;P
Notepad++ 比较你是否安装插件
您可以使用 winmerge,进行文件比较
总司令在同步文件夹中也有默认工具可以比较和修改。
使用 winmerge,我认为最好。
好的,所以我目前正在处理大型 python 2.7 代码库,我当前的任务如下:
有 2 个模块 A
和 B
,它们有很多相似的代码(我的意思是几乎所有的方法都是相同的)。我的目标是创建一个 Base
模块来包含所有通用代码。
为此,我目前正在手动读取和比较 A
和 B
与 之间的(同名)函数,看看它们是否相同(甚至几乎相同) )或不.
那么有什么方法可以自动执行此操作吗?就像 diff
这样的库,它是用来比较 2 个 python 函数代码来告诉我它们的内容是否 same/almost 相同?
例如,目前我正在研究 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(self, table, 参数):
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)
Notice that the 2 functions are not exactly the same. (A difference of a few lines maybe possible). But still a majority of the logic is same at the function level. Any way to detect this?
问题在我看来不是python-related;P
Notepad++ 比较你是否安装插件 您可以使用 winmerge,进行文件比较
总司令在同步文件夹中也有默认工具可以比较和修改。
使用 winmerge,我认为最好。