【问题标题】:How to comment/remove all print statements from Python codebase?如何从 Python 代码库中注释/删除所有打印语句?
【发布时间】:2014-07-23 10:38:09
【问题描述】:

我有这个正则表达式可以从 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'

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

但是,我想修改它以注释所有包含打印语句的行(因此它们并没有完全从代码库中消失)。

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

【问题讨论】:

  • [ \t] 匹配一个空格。你想要[ \t]*
  • Python 2.x 还是 Python 3?
  • 目前为 2.x。我考虑使用 2to3 工具 --fix=print 但这只是将其转换为打印功能并在代码库中导致一堆错误..
  • [ \t] 与大多数机器上的 \s 相同

标签: python regex django logging comments


【解决方案1】:

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" {} \;

【讨论】:

  • 给我一个错误 :: sed: 非法选项 -- r 如果我删除 -r 它给我错误: sed: 1: "./scripts/update_hosts.py": invalid command code .
  • 啊,在你的情况下用E替换r
  • 如果我想删除打印语句而不是注释掉?
猜你喜欢
  • 1970-01-01
  • 2019-07-04
  • 1970-01-01
  • 2011-02-03
  • 2020-11-04
  • 1970-01-01
  • 1970-01-01
  • 2014-10-04
  • 2011-03-21
相关资源
最近更新 更多