Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Python】作成日順にソートされたディレクトリ一覧を取得する方法

Pythonでファイルの作成日順にソートされたディレクトリ一覧を取得したい場合は、次の手順で実現できます。

  1. os.listdir() でディレクトリ内のファイル名一覧を取得する
  2. 各ファイルに対して os.stat() を呼び出し、作成時刻(ST_CTIME)を取得する
  3. 取得した作成時刻をキーに sorted() でソートする

コード例

import os
import time
from stat import S_ISREG, ST_CTIME, ST_MODE

dir_path = '.'

# ディレクトリ内のすべてのエントリのパスを生成
entries = (os.path.join(dir_path, file_name) for file_name in os.listdir(dir_path))

# 各パスのステータス情報を取得
entries = ((os.stat(path), path) for path in entries)

# 通常ファイルのみを残し、(作成日時, パス) のタプルに変換
entries = ((stat[ST_CTIME], path)
           for stat, path in entries if S_ISREG(stat[ST_MODE]))

# 作成日時をキーにソートして表示
for cdate, path in sorted(entries):
    print(time.ctime(cdate), os.path.basename(path))

実行結果

上記のコードを実行すると、作成日の古い順にファイルが一覧表示されます。

Mon Oct 23 18:01:25 2017 sorted_ls.py

ポイント解説

  • ST_CTIME: ステータス情報の中で作成時刻を示すインデックスです。
  • S_ISREG(): エントリが通常のファイルかどうかを判定します。これによりディレクトリなどを除外できます。
  • time.ctime(): UNIXタイムスタンプを人間が読みやすい日付文字列に変換します。
  • 新しい順(降順)に並べたい場合は、sorted(entries, reverse=True) と指定してください。

注意点:OSによる挙動の違い

st_ctime の意味はOSによって異なるため注意が必要です。

  • Windowsの場合: st_ctime はファイルの「作成日時」を返します。
  • Linuxの場合: st_ctime は一般にinodeのメタデータが最後に変更された日時(属性変更時刻)を返し、厳密な作成日時にはなりません。
  • macOSの場合: statst_birthtime 属性で正確な作成日時を取得できます。

このように、クロスプラットフォームで厳密な作成日時が必要なケースでは、OSごとの仕様の違いを考慮して実装することをおすすめします。

  1. C#でファイルサイズを取得する方法|FileInfoクラスのLengthプロパティ活用ガイド

    C#でファイルサイズを取得したい場合、FileInfoクラスを使うのが最も一般的な方法です。この記事では、FileInfoクラスの基本から、単一ファイルおよび複数ファイルのサイズ取得方法まで、実例付きでわかりやすく解説します。FileInfoクラスとはFileInfoクラスは、C#においてファイルとその操作を扱うためのクラスです。ファイルの作成・削除・読み取りなどに使用できるプロパティやメソッドを豊富に提供しており、ファイルへのデータ書き込みにはStreamWriterクラスと組み合わせて使用することもできます。FileInfoクラスはSystem.IO名前空間に属しています。主なプロパティ一

  2. PythonのTkinterでポップアップダイアログを表示する方法【messagebox活用ガイド】

    Tkinterは、GUIベースのアプリケーションを作成・開発するためのPython標準ライブラリです。Tkinterを使えばアプリケーションを構築し、さまざまなウィジェットを追加することで、よりインタラクティブな画面を作ることができます。ここでは、アプリケーション内でポップアップダイアログを表示する方法を紹介します。この場合に役立つのが、tkinterに組み込まれているmessageboxモジュールです。messageboxを使うと、エラーメッセージ、情報ボックス、確認ダイアログなど、さまざまな種類のダイアログボックスを簡単に表示できます。サンプルコード以下の例では、クリックすると画面上にポッ