Pythonでディレクトリ内のフィルターされたファイルのリストを取得する方法


  1. 拡張子に基づくフィルタリング: あるディレクトリ内のファイルを拡張子でフィルタリングする場合、globモジュールを使用することができます。以下は、拡張子が.txtのファイルのリストを取得する例です。

    import glob
    file_list = glob.glob('/path/to/directory/*.txt')

    上記の例では、/path/to/directoryは対象のディレクトリのパスを指定します。*.txtは拡張子が.txtであるすべてのファイルにマッチします。

  2. ファイル名に基づくフィルタリング: ファイル名に基づいてフィルタリングする場合、osモジュールを使用してディレクトリ内のすべてのファイルを取得し、条件に一致するファイルを抽出することができます。以下は、ファイル名が特定の文字列で始まるファイルのリストを取得する例です。

    import os
    directory = '/path/to/directory'
    prefix = 'example_'
    file_list = [filename for filename in os.listdir(directory) if filename.startswith(prefix)]

    上記の例では、/path/to/directoryは対象のディレクトリのパスを指定し、example_で始まるファイルのリストを取得しています。

  3. ファイルの属性に基づくフィルタリング: ファイルの属性(作成日時、最終更新日時など)に基づいてフィルタリングする場合、osモジュールとos.pathモジュールを使用してファイルの属性を取得し、条件に一致するファイルを抽出することができます。以下は、最終更新日時が特定の範囲内のファイルのリストを取得する例です。

    import os
    import os.path
    import datetime
    directory = '/path/to/directory'
    start_date = datetime.datetime(2022, 1, 1)
    end_date = datetime.datetime(2022, 12, 31)
    file_list = [filename for filename in os.listdir(directory) if os.path.getmtime(os.path.join(directory, filename)) >= start_date.timestamp() and os.path.getmtime(os.path.join(directory, filename)) <= end_date.timestamp()]

    上記の例では、/path/to/directoryは対象のディレクトリのパスを指定し、2022年1月1日から2022年12月31日までの最終更新日時の範囲内にあるファイルのリストを取得しています。

これらはいくつかの一般的な方法ですが、さまざまな条件に基づいてフィルタリングするためのカスタマイズも可能です。必要に応じてこれらの例を修正して使用してください。