【发布时间】:2021-02-10 11:09:55
【问题描述】:
我们正在进行一些代码清理。 清理只是关于格式化(如果有问题,那么我们甚至假设行号不会改变,但理想情况下我也想忽略行号的变化)
为了确保没有意外的代码更改,我想找到一种简单/快速的方法来比较两个源代码。
假设我有file1.py 和file2.py
有效的是使用
py_compile.compile(filename) 创建 .pyc 文件然后使用
uncompyle6 pycfile,然后剥掉cmets,对比一下结果,
但这太过分而且非常缓慢。
我想象的另一种方法是复制
file1.py 例如到file.py,
使用 py_compile.compile("file.py") 并保存 .pyc 文件
然后将file2.py 例如复制到file.py 并使用
使用 py_compile.compile("file.py") 并保存 .pyc 文件
最后比较两个生成的 .pyc 文件
这是否适用于所有(当前)版本 >= python 3.6
如果我记得至少对于 python2,pyc 文件可能包含时间戳或绝对路径,这可能会使比较失败。 (至少如果 pyc 文件的生成是在两台不同的机器上运行的)
有没有比较干净的方法来比较py2文件的字节码?
作为奖励功能(如果可能),我想为每个字节码创建一个哈希值,以便将来参考。
【问题讨论】:
标签: python comparison bytecode pyc