広告

Pythonでファイルを日付順にソートするにはos.path.getmtimeをキーにする

タグ:python

さっそくサンプルコードから:
    files = os.listdir("./")
    files.sort(key=os.path.getmtime, reverse=False)
  

ポイントはsortのkey引数の使用で、これが指定されているとsortはlistの要素そのものの代わりに key([要素])の大小比較に基づいて並び替えをしてくれる。

なおディレクトリ内のファイルでは少し工夫が要る。listdirは相対パスではなくファイル名しか 返してくれないので
    files = os.listdir("./dir/")
    files = [os.path.join("./dir/", f) for f in files]
    files.sort(key=os.path.getmtime, reverse=False)
  
のようにファイル名にディレクトリをくっつけてから処理する。

さらにos.pathパッケージには他のファイル属性を取得する関数もあるので、これらでもソートできる。
  • getatime: 最後にアクセスした時刻
  • getctime: 作成時刻 (Windows, Linux), 最後にメタデータが変更された時刻 (Unix)
  • getsize: ファイルサイズ