我的日志文件位于:
/mfs/log/scribe/clicklog/*/clicklog_current
我想用Python实时处理它,所以我创建了一个transform.py
文件:
tail -f /mfs/log/scribe/clicklog/*/clicklog_current | grep 'pattern' | ./transform.py
在tranform.py
中:
def process_line(line):
print real_process(line)
问题是:每次有新行来自stdin
时,如何调用process_line
?你知道吗
通过使用^{} 和
grep
模块,您可以完全摆脱tail -f
部分(尽管在本例中,您甚至不需要它,因为您的搜索条件可以编写为简单的成员资格测试)。你知道吗下面是一个简单的示例(根据文档进行了修改),可以满足您的要求:
这样,您的应用程序不仅更易于移植,而且其所有部分都是独立的。你知道吗
无论何时发生重定向或管道,标准输入流都将设置为该值。所以你可以直接从^{} 读取,就像这样
如果缓冲占用了您的时间,您可以调整/禁用输入缓冲,如this answer中所述
减小缓冲区大小:
现在它最多只能缓冲100个字节
禁用缓冲:
引用官方文件
^{}
^{} 库可能可以执行您要查找的操作。你知道吗
相关问题 更多 >
编程相关推荐