19

例えば:

import os
print(os.listdir("path/to/dir"))

ディレクトリ内のファイルを一覧表示します。

ディレクトリ内のすべてのファイルのファイル変更時刻を取得するにはどうすればよいですか?

4

3 に答える 3

49

ディレクトリ内のすべてのファイルのファイル属性を検索するときに、Python 3.5 以降を使用している場合は、os.scandir()関数を使用して、ファイル属性を組み合わせたディレクトリ リストを取得します。os.listdir()これは、ファイル属性を個別に使用して取得するよりも効率的である可能性があります。

import os

with os.scandir() as dir_entries:
    for entry in dir_entries:
        info = entry.stat()
        print(info.st_mtime)

DirEntry.stat()関数を Windows で使用する場合、追加のシステム コールを行う必要はありません。ファイルの変更時間は既に利用可能です。データはキャッシュされるため、追加のentry.stat()呼び出しによって追加のシステム コールが作成されることはありません。

pathlibモジュールObject Oriented instances を使用して同じことを実現することもできます。

from pathlib import Path

for path in Path('.').iterdir():
    info = path.stat()
    print(info.st_mtime)

以前のバージョンの Python では、この呼び出しを使用してos.stat、変更時間などのファイル プロパティを取得できます。

import os

for filename in os.listdir():
    info = os.stat(filename)
    print(info.st_mtime)

st_mtimePython 2.5 以降では float 値で、エポックからの秒数を表します。timeまたはモジュールを使用して、datetimeこれらを表示目的などで解釈します。

値の精度は、使用している OS によって異なることに注意してください。

st_atime、st_mtime、および st_ctime 属性の正確な意味と解決策は、オペレーティング システムとファイル システムによって異なります。たとえば、FAT または FAT32 ファイル システムを使用する Windows システムでは、st_mtime の分解能は 2 秒ですが、st_atime の分解能は 1 日しかありません。詳細については、オペレーティング システムのドキュメントを参照してください。

変更時刻を取得するだけなら、このos.path.getmtimeメソッドは便利なショートカットです。os.statボンネットの下でメソッドを使用します。

ただし、このos.stat呼び出しは比較的コストがかかることに注意してください (ファイル システムへのアクセス)。そのため、多数のファイルに対してこれを行い、ファイルごとに複数のデータポイントが必要な場合は、os.stat返された情報を使用して再利用する方が、ファイルごとに複数回呼び出されるos.path便利なメソッド。os.stat

于 2012-06-09T11:09:50.403 に答える
4

変更された時刻のみが必要な場合は、それos.path.getmtime(filename)が取得されます。引数を使用listdirしている場合は、次も使用する必要がありますos.path.join

import os, os.path

for filename in os.listdir(SOME_DIR):
    print os.path.getmtime(os.path.join(SOME_DIR, filename))
于 2012-06-09T11:59:58.913 に答える