2013-06-05 191 views
5

我有一个任意数量的行的日志文件。我需要的只是从日志文件中提取一行数据,该数据以字符串“Total”开头。我不希望文件中有任何其他行。日志文件解析python

如何为此编写一个简单的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 

好吧..所以我想一个输出文件只有第一,第二,第四和第五列来自输入文件但不是其他文件。我正在尝试列表[索引]来实现这一目标,但得到一个IndexError :(列表索引超出范围)。此外,2列之间的空间不一样,所以我不知道如何拆分列,并选择我想要的。有人可以帮我这个。以下是节目我用

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更快? –

回答

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])