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

Win*_*ron 1 python regex django logging comments

我有这个正则表达式来从 python 代码库中删除所有打印语句:

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

但它真的不起作用..

find . -name '*.py' | xargs egrep '^[ \t]*print'
Run Code Online (Sandbox Code Playgroud)

仍然从我的代码中打印出打印语句..:(

但是,我想修改它以注释掉其中包含 print 语句的所有行(这样它们就不会完全从代码库中消失)。

我怎样才能有效地做到这一点?更好的是有一种自动化的方法将所有内容转换为日志框架吗?

Mat*_*att 5

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

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

对于 Mac OS X 或 BSD:

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