自动比较 2 python 个代码

Compare 2 python codes automatically

好的,所以我目前正在处理大型 python 2.7 代码库,我当前的任务如下:

有 2 个模块 AB,它们有很多相似的代码(我的意思是几乎所有的方法都是相同的)。我的目标是创建一个 Base 模块来包含所有通用代码。

为此,我目前正在手动读取和比较 AB 之间的(同名)函数,看看它们是否相同(甚至几乎相同) )或不.

那么有什么方法可以自动执行此操作吗?就像 diff 这样的库,它是用来比较 2 个 python 函数代码来告诉我它们的内容是否 same/almost 相同?

例如,目前我正在研究 2 个模块 ResourceStatusDB.pyResourceStatusManagement.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,我认为最好。