我正在编写一个简短的脚本,它会记录日志文件。应该可以使用正则表达式过滤输出,并在必要时按/ 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;)
有人有任何想法吗?
答案 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”保存到容器中,然后对其运行正则表达式。