2015-10-14 37 views
0

我寫了一個腳本,在日誌文件中查找最大值。然後,我可以將最大值寫入另一個文件。我的問題: a。是如何針對目錄 中的所有文件運行它b。將「文件名」+「最大值」寫入1個文件。如何使用我的腳本遍歷文件夾並寫入文件名?

這裏是我的代碼:

1 import re 
    2 
    3 a = 'NA total MB July.csv' 
    4 b = 'Total.csv' 
    5 
    6 with open(a, 'r') as f1: 
    7   with open(b,'w') as f2: 
    8     header = f1.readline() 
    9     data= f1.readlines() 
10     pattern= re.compile(",|\s") 
11     maxMB=[] 
12     for line in data: 
13       parts = pattern.split(line) 
14       #print "Log line split",parts #splits the number 
15       mbCount= parts[2] #index of the number 
16       mbint=float(mbCount) 
17       maxMB.append(mbint)# creates a list of all MBs 
18       #print "MAX: ", maxMB #prints out the max MB 
19     highest=max(maxMB) 
20     print highest 
21     f2.write(str(highest))#writes highest value to file 

這裏是我的文件輸出

167.94

我正在尋找在Total.csv看到的是

NA total MB July : 167.94 
NA total MB August: 123.45 
... 
.. 
. For all the csv files with in a folder 

無法完全弄清楚如何在不處理1個文件的情況下進行這項工作並手動更改文件名。任何幫助這個n00b將不勝感激。謝謝!

+1

退房os.walk() – BlivetWidget

回答

1

您可以使用os.listdir()來抓取當前目錄中的文件。

files = [f for f in os.listdir('.') if os.path.isfile(f)] 
for f in files: 
    #do something 

可以在ab模式下打開Total.csv文件,以便您可以追加所有的最大值爲只有一個文件。

with open('Total.csv', 'ab') as out: 
    writer = csv.writer(out, delimiter=',', quotechar='"',quoting=csv.QUOTE_ALL) 
    row = (,) 
    writer.writerow(row) 
+0

所以我把你的一些代碼,因爲代碼和還挺得到它的工作: '5路徑=「/用戶/ kchan/Edgecast /代碼/ twitterlog/HTTP-SM -AU「 6 dirs = os.listdir(path) 8 b ='/Users/kchan/Edgecast/code/twitterlog/HTTP-SM-AU/modfile.txt' 10#打印所有文件目錄 11用於文件的目錄: 12#打印文件 – chowpay

相關問題