Pythonでファイルの一覧を取得して作成日時でソートする方法

気がつくと3ヶ月もブログ書いてなかった。

内容はタイトルの通り、指定したディレクトリのファイル一覧を取得して、作成日時昇順だったり降順でソートする方法。

Djangoとか使ってWebアプリ書いてる場合にはあんまりファイルのソートとかは使わないと思いますけど、バッチとか書いたりすると結構使います。Shellで書けばもっと簡単なんだろうけど。

# -*- coding: utf-8 -*-

import os
import glob
from datetime import datetime

_path = '/対象のディレクトリ/*'

_files = glob.glob(_path)
_files.sort(
    cmp=lambda x, y: int(os.path.getctime(x) - os.path.getctime(y)),
    reverse=True)

for item in _files:
    _timestamp = os.path.getctime(item)
    print item
    print datetime.fromtimestamp(_timestamp).strftime("%Y/%m/%d %H:%M:%S")

下の方のループはソートの結果を出力してるだけなのでソート処理自体には関係ないです。os.path.getctime(x)で作成日時を取得しています。reverse=Trueをつけているので作成日時降順、つまり新しい順です。reverse=Trueを付けなければ昇順、古い順になります。

ファイルの一覧を取得するコードに関してはこちらで書いてます。

ソートはキーになる値をラムダ式で指定してます。正直、あんまりラムダ式使わないようにしてるんですけど、こういうときは関数を別に書くよりはラムダ式使ったほうが読みやすい気がします。

このへんは人それぞれだと思いますので、書きやすいように書いてもらえればいいと思います。