日志文件解析 Python

5
我有一个任意行数的日志文件。我需要从这个日志文件中提取以字符串“Total”开头的一行数据。我不想要文件中的任何其他行。
我该如何编写一个简单的Python程序来实现这个功能?
这是我的输入文件长这样:
TestName     id         eno            TPS      GRE          FNP
Test 1205    1            0            78.00        0.00         0.02
Test 1206    1            0            45.00        0.00         0.02
Test 1207    1            0            73400        0.00         0.02
Test 1208    1            0            34.00        0.00         0.02

Totals       64           0            129.61       145.64       1.12

我正在尝试获取一个类似于输出文件的文件。
TestName     id      TPS         GRE
Totals       64      129.61      145.64

好的..所以我只想从输入文件中获取第一列、第二列、第四列和第五列,而不是其他列。我试图使用list[index]来实现这一点,但是却得到了IndexError:(列表索引超出范围)。此外,两列之间的间距不同,所以我不确定如何拆分列并选择我想要的那些列。有人能帮我吗?下面是我使用的程序

newFile = open('sana.log','r')

for line in newFile.readlines():

    if ('TestName' in line) or ('Totals' in line):

        data = line.split('\t')

        print data[0]+data[1]

2
Python似乎对于这个任务来说有点过头了,用grep不是更快吗? - Woodrow Douglass
2个回答

3
theFile = open('thefile.txt','r')
FILE = theFile.readlines()
theFile.close()
printList = []
for line in FILE:
    if ('TestName' in line) or ('Totals' in line):
         # here you may want to do some splitting/concatenation/formatting to your string
         printList.append(line)

for item in printList:
    print item    # or write it to another file... or whatever

1
for line in open('filename.txt', 'r'):
    if line.startswith('TestName') or line.startswith('Totals'):
        fields = line.rsplit(None, 5)
        print '\t'.join(fields[:2] + fields[3:4])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接