对 Python 文件使用 diff util 和 --show-function-line

问题描述 投票:0回答:1

我喜欢将 Python 源代码与

diff
util 进行比较,并且我看到
git diff
显示了块或块中的函数名称(对于某些文件,但也不适用于 Python)?标头。这就是为什么我试图对正常的
diff
做同样的事情。

然后我发现有一个

-p, --show-c-function
参数,它不能很好地处理Python文件(我只获取类名)。所以我还在手册页中找到了参数:
-F, --show-function-line=RE

现在我搜索了一个不错的 RE 来匹配 python 函数,将它们包含在我的 diff 输出中,但运气不佳。

我知道我们有

def myname():
async def myname():
...也许还有更多?

有人有一个好的正则表达式吗?

找到了这个,但它不适用于 diff util(输出没有函数名称):

diff -Nru -F '(?P<function>\w+)\s?\((?P<arg>(?P<args>\w+(,\s?)?)+)\)' modules/websocket/__init__.py.old modules/websocket/__init__.py

问候, 托马斯

python regex diff
1个回答
0
投票

正在比较跨版本的两个大型 Python 代码库,并且缺少函数名称 - 因此根据这个问题中的提示,我使用了

-F
参数。

这真的很简单 -

diff -F '\Wdef '  old.py  new.py

匹配任何后跟空格且前面是非单词字符(例如换行符或空格)的

def

© www.soinside.com 2019 - 2024. All rights reserved.