如何注释/删除Python代码中的所有打印语句?

1 投票
1 回答
2715 浏览
提问于 2025-04-18 08:22

我有一个正则表达式,用来从Python代码中删除所有的打印语句:

for f in $(find . -name '*.py') ;
do
egrep -v '^[ \t]print ' $f > $f.new
mv $f.new $f
done

但是它实际上并没有起作用..

find . -name '*.py' | xargs egrep '^[ \t]*print'

我的代码中的打印语句还是会被打印出来.. :(

不过,我想把这个正则表达式改成可以把所有包含打印语句的行注释掉(这样它们就不会完全消失在代码中)。

我该怎么高效地做到这一点呢?更好的是,有没有自动化的方法可以把所有的打印语句转换成日志框架?

1 个回答

5

Sed是完成这个工作的工具。

find . -name '*.py' -exec sed -ri "s/(^\s*)(print.*$)/#\1\2/g" {} \;

适用于Mac OS X或BSD系统:

find . -name '*.py' -exec sed -Ei "s/\(^[[:space:]]*\)\(print.*$\)/#\1\2/g" {} \;

撰写回答