2012-07-23 46 views
0

因爲我對Python沒有太多的知識我想問一問如何將多個輸入文件保存到不同列中的一個Excel文件中?我有一個python腳本,需要輸入一個單獨的日誌文件:將多個輸入文件轉換爲一個Excel文件,使用Python

file = 'output_1.log' 

,並輸出成Excel文件。此日誌文件的一些成果在一列這樣的:

data = open(file, 'r') 

我怎樣才能更改這些命令以便讀取多個文本文件(*.log),並將結果打印到每個輸入文件的不同列中的單個Excel文件中?

謝謝...

+0

1.你在記錄什麼? 2.你想通過將它們濃縮到1個文件來完成什麼? 3.您需要對來自不同日誌的日誌消息進行什麼樣的排序? – 2012-07-23 16:32:10

+0

我已經有了一個python腳本,它可以記錄車輛的速度和加速度,並以2個excel文件的速度和加速度輸出車輛的速度和加速度。但是這個腳本只能用這個命令讀取一個特定的文件:file ='output_1.log'。我想讀取例如20輛車,並在2個不同的Excel文件中輸出速度和加速度,每輛車一列。 – athpapa 2012-07-23 16:37:37

+0

一般概述是:1)獲取你想要解析的文件列表,2)遍歷文件並在寫入Excel時讀取它們。我不確定當前寫入Excel的內容,但該步驟不應改變。 – ernie 2012-07-23 16:51:11

回答

1

這會做你想做的。它單獨讀取每個文件以創建一個將每個文件名映射到其列表的字典。

import glob 

data = {} 
for infile in glob.glob("*.log"): 
    with open(infile) as inf: 
     data[infile] = [l[:-1] for l in inf] 

with open("summary.xls", "w") as outf: 
    outf.write("\t".join(data.keys()) + "\n") 
    for sublst in zip(*data.values()): 
     outf.write("\t".join(sublst) + "\n") 
0

大衛的回答是一個不錯的選擇。我個人更傾向於使用類似os.walk(如果從一個目錄中提取所有文件)遍歷所有日誌文件,或者從用戶提供的列表中迭代它們。

至於編寫XLS文件,您當然可以使用連接作爲TSV來完成,如David所指出的。但是,使用像XLWT這樣的庫可以爲您提供更多控制權並獲得更多的Excel功能。如果您確實想將其作爲TSV進行操作,您仍然可以使用其編寫器對象來查看CSV庫,以幫助進行文本引用等操作。

相關問題