ファイルの一覧を確認する¶
os モジュールを使って、カレントディレクトリのファイルを確認します。
ファイル一覧を取得する¶
ディレクトリ内のファイル一覧を取得するためには os.listdir() を使います。
>>> import os
>>> os.listdir(".")
['.git', '.gitignore', '.lock-waf_darwin_build', '.Python', '_build', 'bin', 'doc', 'etc', 'include', 'lib', 'man', 'python-shool-ja-1.0.0.tar.bz2', 'README.rst', 'requirements.txt', 'src', 'wscript']
ファイルの最終更新時刻を取得する¶
ファイルの最終更新時刻を取得するためには os.path.getmtime() を使います。
>>> import os
>>> os.path.getmtime("README.rst")
1323302266.0
Unix タイムスタンプが返ってきますが、 datetime モジュールでラップすると他の処理と組み合わせやすくなります。 文字列にするときは strftime() に書式文字列を指定しましょう。
>>> import datetime
>>> import os
>>> t = os.path.getmtime("README.rst")
>>> datetime.datetime.fromtimestamp(t)
datetime.datetime(2013, 12, 5, 0, 59, 49)
>>> d = _
>>> d.strftime("%Y-%m-%d")
'2013-12-05'
ファイル一覧をソートする¶
ファイルの一覧を最終更新時刻でソートします。 リストには sort() メソッドがありますが、これには比較属性を与えることができます。 元のリストを変更したくない場合は組み込み関数 sorted() を利用してください。
>>> import os
>>> files = [f for f in os.listdir('.')]
>>> files[0:5]
>>> files.sort(key=os.path.getmtime)
>>> files[0:5]
Python 2.x 系と Python 3.x 系では比較関数の書き方が異なります。 移植する場合とリファレンスを読む場合は注意して実装に移すようにしてください。 詳しくはこちらの記事を読んでみましょう。
まとめ¶
以上をまとめて、カレントディレクトリのファイルとディレクトリの最終更新日時を表示させましょう。
>>> from datetime import datetime
>>> import os
>>> files = os.listdir('.')
>>> for f in sorted(files, key=os.path.getmtime):
... t = datetime.fromtimestamp(os.path.getmtime(f))
... print("{:30}\t{}".format(f, t.strftime("%Y/%m/%d %H:%M:%S")))
ファイル名をさらに解析して処理を切り替える場面では、シェルスクリプトよりも Python の方が書きやすいことが多いでしょう。 ファイル名から拡張子を取得するには os.path.splitext がありますので、 os モジュールの内容は一通り確認してみましょう。