2014-06-10 50 views
11

我試圖在'upload'目錄中使用'.log'擴展名中的最新文件來由Python進行處理。我使用一個Ubuntu網絡服務器,文件上傳由一個html腳本完成。上傳的文件由Python腳本處理,結果寫入MySQL數據庫。我爲我的代碼使用了this答案。Python在特定擴展名的目錄中獲取最新文件

import glob 
newest = max(glob.iglob('upload/*.log'), key=os.path.getctime) 
print newest 
f = open(newest,'r') 

但是,這並沒有得到目錄中的最新文件,而是獲取最舊的文件。爲什麼?

+3

嘗試'min',而不是'max' - 邏輯*反向* ? –

+0

這給了我最新的文件,當我從python交互式控制檯運行它。 – Himanshu

+1

考慮一下吧,你可能想'os.path.getmtime' - 創建時間和修改時間不同,雖然...太錯誤了......不知道 –

回答

18

的問題是,max的邏輯反是min

newest = max(glob.iglob('upload/*.log'), key=os.path.getctime) 

你的目的應該是:

newest = min(glob.iglob('upload/*.log'), key=os.path.getctime) 
+2

尋找一種方法來識別最新文件需要注意的新手因爲最大getctime應該是最新的日期,因此是最新的。我發現max在AMD64和raspberry pi上給出了Linux上的最新文件。不知道這裏發生了什麼。 – Paul

+0

@Paul的確如此......我記得當我回答這個問題時,認爲OP的方法是正確的,並且建議'min' over'max'確實是一個建議,看看他們是否想要最老的(或者只是看看他們是否是他們的對手真的很想)... –

+0

@JonClements你好我正在做類似的事情,抓住一定的文件格式,它必須是最新的,並在一個目錄內。想知道是否有任何方法可以使用'os'模塊而不使用'glob'? – yan

相關問題