2015-08-13 60 views
0

我有一個大的日誌文件,該文件包含的信息,我感興趣的唯一信息是像下面我怎麼能提取一個大的日誌文件在python線

..... 
..... 
..... 
I0813 11:58:19.631247 30700 solver.cpp:189] Iteration 500, loss = 0.0922444 
I0813 11:58:19.631288 30700 solver.cpp:470] Iteration 500, lr = 0.001 
..... 
..... 
..... 
I0813 12:05:11.543995 30700 solver.cpp:189] Iteration 520, loss = 0.0299977 
I0813 12:05:11.544034 30700 solver.cpp:470] Iteration 520, lr = 0.001 
..... 
..... 
..... 
I0813 12:10:11.543995 30700 solver.cpp:189] Iteration 420, loss = 0.0299977 
I0813 12:10:11.544034 30700 solver.cpp:470] Iteration 540, lr = 0.001 

我怎樣才能提取這些行並在python中提取像迭代,lr,損失和時間戳這樣的關鍵數據並保存在另一個文件中。

注意,尊貴數據就像 solver.cpp:189迭代或solver.cpp:470迭代

+4

什麼區分你感興趣的線和其他線? – codebox

+0

你確定你需要Python嗎?如果您正在使用Linux/UNIX – codebox

+0

,那麼您可以使用'grep'和'cut'結合使用,如果solver.cpp:189可以在行結束時得到損失,則區分的數據就像solver.cpp。如果solver.cpp.470則可以在行尾獲得lr。我使用python的原因是我想在獲得這些關鍵信息後繪製圖表 – user824624

回答

1
logfile = r'C:\logfile.txt' 
y = open(r'C:\extract.txt', 'a') 
with open(logfile, 'r') as read: 
    for line in read: 
    if "solver.cpp:189" in line: 
     loss = line.split(',')[1] 
     y.write(loss) 
    if "solver.cpp:470" in line: 
     lr = line.split(',')[1] 
     y.write(lr) 

同樣的,你可以在 '=' 分裂得到公正的身影。或者,如果你想更具體一些,你可以分成'lr ='或'loss ='。這實際上取決於你打算如何應用它以及日誌的其他部分是什麼樣子。