自动比较2个python代码

时间:2019-06-15 15:07:22

标签: python diff

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

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

为此,我目前正在手动阅读和比较AB之间的(同名)函数,以查看它们是否相同(甚至相同)< / strong>。

那么有什么办法可以自动化?就像diff之类的库一样,它用来比较2个python函数代码以告诉我它们的内容是否相同/几乎相同?

例如,目前我正在研究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(自我,表格,参数):

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)
  

请注意,这两个功能并不完全相同。 (可能会有几行的差异)。但是,大多数逻辑在功能级别上是相同的。有什么办法检测到这个吗?

1 个答案:

答案 0 :(得分:1)

我认为问题与python无关; P

如果您安装了插件,Notepad ++可以进行比较 您可以使用winmerge进行文件比较

在同步文件夹中的总指挥官也具有用于比较和修改的默认工具。

我认为最好采用winmerge。