2023年10月11日 星期三

Python 學習筆記 : 使用 os.listdir() 時如何讓檔案照日期時間排序

前陣子寫的工作流程自動化軟體中有一個備忘錄功能, 可以在操作過程中將系統自動產生的作業指令紀錄下來成為備忘錄, 以後遇到類似任務就可以快速找到參考訊息, 但備忘錄檔案我只是用 os.listdir() 傳回的串列製作成樹狀結構, 預設是以檔名為排列順序, 我希望能以日期時間來倒排, 即最新的排最上面, 這要怎麼做? 我找到下面這篇 : 


原來可以利用 os.path.getmtiom() 或 os.path.getctiom() 來當排序的 key, 前者是依據最後修改時間, 後者則是依據文件建立時間來排序, 改寫如下 :

import os

def get_file_list(dir_path):
    flist=os.listdir(dir_path)
    if not flist:
        return
    else:
        flist=sorted(flist, key=lambda x: os.path.getmtime(os.path.join(dir_path, x)), reverse=True)
        return file_list  

此函式參數 dir_path 為資料夾路徑字串, 例如 'memo' 表示程式路徑下的子目錄 memo. 而傳入 sorted() 的第二參數 reverse=True 表示要倒序排序 (最近者在前), 測試結果 OK :

>>> import os
>>> get_file_list('memo')   

沒有留言 :