2014-02-22 64 views
0

我有一個包含大量子目錄和文件的目錄,並且希望找到最近編輯過的文件(它們應該全部同時編輯)。對最後修改的文件列表進行排序

到目前爲止,我已經設法列出目錄中的所有文件,但試圖對列表進行排序,以便我能夠獲得最新的文件會引發錯誤,並且我希望有人能夠幫助我理解什麼是繼續。 :)

至今代碼:

import os 

for path, subdirs, files in os.walk('.'): 
    for name in files: 
     print sorted(os.path.getmtime(os.path.join(path, name))) 

和錯誤:

line 5, in <module> 
    print sorted(os.path.getmtime(os.path.join(path, name))) 
TypeError: 'float' object is not iterable 

有此錯誤的一些解釋在那裏,但我看不出他們是如何適用我在這裏做什麼,所以我可以使用一些幫助。

非常感謝!

+0

'os.path.getmtime'返回浮點數。您可能必須創建一個文件時間戳列表,然後使用'sorted()'對其進行排序。 –

回答

0

整理5月接受一個序列 os.path.getmtime 它的Wii給一個浮點值

錯誤here.you寫了這樣 排序(10.51)#its錯誤

你必須寫像這樣 排序([8,6,4,9,3])

首先讓列表看起來像這樣並對其進行排序。 [(時間,路徑),(時間,路徑),(時間,路徑)]

示例代碼:

tosort=[] #make a list 
import os 
for path, subdirs, files in os.walk('.'): 
    for name in files: 
     atuple=(os.path.getmtime(os.path.join(path, name)),path) 
     tosort.append(atuple) 
tosort.sort() 

現在tosort命名列表將排序

1
import os 

for path, subdirs, files in os.walk('.'): 
    for name in sorted(files, key=lambda name: 
        os.path.getmtime(os.path.join(path, name))): 
     print name 

第一個參數到sorted應該始終是一個序列。這些是將由sorted返回的項目,但可能以不同的順序。 key參數可以設置爲可調用。將調用序列中的每個項目的可調用對象。 callable返回的值將被用作代理值,根據該值將序列中的項目排序。有關更清晰的解釋,請參見HOWTO Sort

+0

您修復了代碼,解釋了問題並指向包含更多信息的外部資源。 3爲3! :) – Berry

相關問題