python - python中有没有办法尾随文件并使用行输出
问题描述
我正在编写一个尾随日志文件的简短脚本。应该可以使用正则表达式过滤输出,并在必要时按 /t 分割。
几年前我在 perl 中写过类似的东西,但必须将其更改为 python
perl 代码片段:
open(FILE,"tail -F logfile | grep -v something | ");
while(<FILE>){
my @lineparts = split(/\t/,$_);
...
do something else
...
}
我已经尝试过 Popen 不同的品种(logger.sh 在远程服务器上通过 ssh 包含 tail -F)
cmd = subprocess.Popen("./logger.sh").communicate()
for line in cmd.stdout.readline():
test = line
if re.match('.*ERR.*', test):
print "ERROR"
但我得到的只是标准输出上的输出,我无法操作它(从未打印过“错误”)
有人有什么想法吗?
解决方案
我对正则表达式无能为力,因为您没有发布日志文件外观的示例。我可以帮助处理文件的尾部,因为这是非常普遍的。
data = []
with open(logfile,'rt',encoding='utf-8')as infile:
for i,e in enumerate(infile):
data.append(e.strip())
if i < 11:
for line in data:
print(line)
else:
for line in data[:-10]:
print(line)
在您的情况下,您会将“打印”保存到容器中,然后针对它运行您的正则表达式。
推荐阅读
- aws-lambda - AWS lambda 内联编辑器不保存更改
- apache - 清漆 HTC 状态 -1 Magento 2 Apache
- linux-kernel - 使用 bcc/bpf 的最大 uprobe 数
- c# - 许多相对较大的对象的 C# 垃圾回收
- java - 如何打印 LinkedList 的不同数据?
- selenium - Selenium:JavaScript 警告:return 语句后无法访问代码
- tradingview-api - 在带有底部指示器的主图表上绘制标签
- sql - 如何使用 OFFSET 在 postgresql 中返回排除行的数量
- performance - 如何正确计算 CPU 和 GPU FLOPS 性能?
- drupal - Drupal 8 - 作曲家更新抛出错误