我有一組文件夾,我希望能夠運行一個函數來查找最近編輯過的文件,並告訴我文件的名稱及其所在的文件夾。在python中查找最近編輯過的文件
文件夾佈局:
root
Folder A
File A
File B
Folder B
File C
File D
etc...
任何提示,讓我開始,我已經打了一下牆上的。
我有一組文件夾,我希望能夠運行一個函數來查找最近編輯過的文件,並告訴我文件的名稱及其所在的文件夾。在python中查找最近編輯過的文件
文件夾佈局:
root
Folder A
File A
File B
Folder B
File C
File D
etc...
任何提示,讓我開始,我已經打了一下牆上的。
你應該看看os.walk功能,以及os.stat,它可以讓你做這樣的事情:
import os
max_mtime = 0
for dirname,subdirs,files in os.walk("."):
for fname in files:
full_path = os.path.join(dirname, fname)
mtime = os.stat(full_path).st_mtime
if mtime > max_mtime:
max_mtime = mtime
max_dir = dirname
max_file = fname
print max_dir, max_file
'os.path.getmtime()'是'os.stat(full_path).st_mtime'方便的簡寫形式 – 2010-04-28 16:45:04
我運行時遇到錯誤它從我的主目錄: OSError:[Errno 2]沒有這樣的文件或目錄:'./.config/chromium/SingletonLock' – armandino 2010-04-28 18:22:37
@armandino:我猜問題是,有一個鎖文件是創建並非常迅速地刪除。如果它在'os.walk'返回它的文件名後,但在調用'os.stat'之前被刪除了,那麼你會期望看到這樣的錯誤。如果你真的需要在這樣的文件被刪除的目錄上運行這樣的腳本,我建議在try/except塊中將調用包裝到'os.stat'中。 – 2010-04-28 18:49:37
使用os.path.walk()
遍歷目錄樹和os.stat().st_mtime
以獲取文件的mtime。
您傳遞給os.path.walk()
(visit
參數)的函數只需要跟蹤它看到的最大mtime以及它看到它的位置。
'os.path.walk'已被棄用 – SilentGhost 2010-04-28 15:55:43
它有助於將內置目錄打包到只產生完整文件路徑的函數中。然後,你可以採取返回文件的功能,並挑選出具有最高修改時間的一個:
import os
def all_files_under(path):
"""Iterates through all files that are under the given path."""
for cur_path, dirnames, filenames in os.walk(path):
for filename in filenames:
yield os.path.join(cur_path, filename)
latest_file = max(all_files_under('root'), key=os.path.getmtime)
不錯的提示 - 這幫了我一個小工程,我正在努力。 – 2013-05-20 12:14:22
雖然這種聯繫可以回答這個問題,最好是在這裏有答案的關鍵部位和提供鏈接供參考。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [發表評論](/ review/low-quality-posts/18075324) – Deep 2017-11-27 13:16:45