【发布时间】:2019-01-18 04:21:23
【问题描述】:
Shell 脚本:
logcat | grep -E "one|two|three"
Python 代码:
key_words = [ "one", "two", "three"]
log_lines = os.popen("logcat");
for log_line in log_lines:
for keyword in key_words:
if keyword in log_line:
print log_line
上面的python代码有什么优化吗?
【问题讨论】:
-
如果一行包含多个关键字,是否要打印两次/三次?
-
logcat 可以直接做
logcat -e <regex>,不确定它是否支持像|这样的扩展正则表达式语法。此外,具有多个匹配项的行只会显示一次。 -
os.popen()曾经带有一个又大又丑的警告,说它已被弃用,但看起来警告现在已经消失了。我猜他们无法杀死它,所以他们在subprocess之上重新实现了它,这正是我要推荐的。 -
如果您使用的是 Python 2,
os.popen()仍然是您应该避免的事情。 (但是 Python 2 现在是你应该非常避免的事情。考虑尽快迁移到 Python 3。)