有没有办法在python中拖尾文件并使用行输出

时间:2018-04-27 12:08:35

标签: python

我正在编写一个简短的脚本,它会记录日志文件。应该可以使用正则表达式过滤输出,并在必要时按/ t分割。

几年前我在perl中写了这样的东西但是必须把它改成python

Perl的代码sniplet:

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"

但我得到的是stdout上的输出,我无法操纵它(从不打印&#34; ERROR&#34;)

有人有任何想法吗?

1 个答案:

答案 0 :(得分:0)

我无法使用正则表达式,因为您没有发布日志文件的示例。我可以帮助文件的尾部,因为这是非常普遍的。

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)

在您的情况下,您可以将“print”保存到容器中,然后对其运行正则表达式。