Python|ファイルの更新日時を取得する

1. はじめに

Pythonでファイルの管理を行う際、「ファイルの更新日時を取得する」ことは非常に重要です。ログファイルの確認や、最新データの検出、ファイルの整理など、実務でもよく使われる処理です。

本記事では、Python初心者〜中級者向けに、os.pathやpathlibを使ってファイルの更新日時を取得する方法をわかりやすく解説します。具体的なコード例とともに、応用パターンや注意点も紹介します。

 

2. Pythonでファイルの更新日時を取得する基本

2-1. os.path.getmtime() を使う方法

os.path.getmtime()は、指定したファイルの最終更新時刻(UNIXタイムスタンプ)を取得する関数です。

import os
import datetime

# 対象のファイルパス
file_path = 'sample.txt'

# 最終更新時刻を取得(UNIXタイムスタンプ)
timestamp = os.path.getmtime(file_path)

# UNIXタイムスタンプを日付に変換
mod_time = datetime.datetime.fromtimestamp(timestamp)

# 結果を表示
print("最終更新日時:", mod_time)

実行結果:

最終更新日時: 2025-07-14 18:23:45.123456

この方法は、Python標準ライブラリだけで実行できるため手軽です。

2-2. pathlib を使う方法

Python3.4以降では、pathlibモジュールが推奨されています。より直感的にファイルパスを扱えるのが特徴です。

from pathlib import Path
import datetime

# Pathオブジェクトを生成
file = Path('sample.txt')

# 最終更新時刻(UNIXタイムスタンプ)
timestamp = file.stat().st_mtime

# UNIXタイムスタンプを日付に変換
mod_time = datetime.datetime.fromtimestamp(timestamp)

print("更新日時:", mod_time)

実行結果:

更新日時: 2025-07-14 18:23:45.123456

stat().st_mtimeで取得される値はos.path.getmtime()と同じですが、コードが読みやすくなります。

 

3. ファイルの更新日時のよくある使い方・応用例

3-1. ファイルの更新が新しい順にソートする

フォルダ内のファイルを更新日時の降順(新しい順)で並べたい場合、以下のように処理できます。

from pathlib import Path
import datetime

# ディレクトリ内のファイル一覧を取得
files = list(Path('.').glob('*.txt'))

# 更新日時でソート(新しい順)
sorted_files = sorted(files, key=lambda f: f.stat().st_mtime, reverse=True)

# 結果を表示
for f in sorted_files:
    mod_time = datetime.datetime.fromtimestamp(f.stat().st_mtime)
    print(f"{f.name} - 更新日時: {mod_time}")

実行結果:

report.txt - 更新日時: 2025-07-15 08:30:00
data.txt - 更新日時: 2025-07-14 21:10:20
memo.txt - 更新日時: 2025-07-13 17:50:10

このようにソートして表示することで、最新のファイルを素早く見つけられます。

3-2. 一定期間内に更新されたファイルを抽出する

以下は、24時間以内に更新されたファイルだけを抽出する例です。

from pathlib import Path
import datetime

# 現在時刻を取得
now = datetime.datetime.now()

# 対象ディレクトリのファイルを確認
for f in Path('.').glob('*.*'):
    mod_time = datetime.datetime.fromtimestamp(f.stat().st_mtime)
    if (now - mod_time).total_seconds() < 86400:
        print(f"{f.name} は24時間以内に更新されました。")

実行結果:

data.txt は24時間以内に更新されました。

ログ監視やバックアップ対象の抽出など、実務でよく使われるパターンです。

 

4. 注意点・エラー対策

4-1. ファイルが存在しない場合のエラー

os.path.getmtime()やpathlib.Path.stat()を使う場合、対象ファイルが存在しないとFileNotFoundErrorが発生します。エラーハンドリングで安全に処理しましょう。

from pathlib import Path
import datetime

file = Path('not_exist.txt')

if file.exists():
    mod_time = datetime.datetime.fromtimestamp(file.stat().st_mtime)
    print("更新日時:", mod_time)
else:
    print("ファイルが存在しません。")

実行結果:

ファイルが存在しません。

4-2. タイムゾーンの取り扱い

datetime.fromtimestamp()で取得される日時は、実行環境のローカルタイムです。UTCとの変換が必要な場合は`datetime.datetime.utcfromtimestamp()`を使うとよいでしょう。

 

5. まとめ

本記事では、Pythonで「ファイルの更新日時を取得する方法」について解説しました。

  • os.path.getmtime()やpathlib.Path.stat().st_mtimeで更新日時(UNIXタイムスタンプ)が取得可能
  • datetimeモジュールと組み合わせて、人が読める日付形式に変換できる
  • 更新日時を使ってファイルのソートや抽出など応用が可能
  • ファイルが存在しない場合のエラー処理も重要

実務では、ログ管理、バックアップ処理、自動ファイル監視など、多くの場面で活用されます。
Python初心者の方も、ぜひこのテクニックを身につけて、効率的なファイル操作に役立ててください。

タイトルとURLをコピーしました