Pythonでファイルの更新日やサイズを取得する方法!os.stat()を初心者向けに解説
先生と生徒の会話形式で理解しよう
生徒
「先生、Pythonでファイルのサイズや更新日を知りたいときはどうすればいいですか?」
先生
「それにはPythonのosモジュールのstat()関数を使う方法があります。ファイルの情報を簡単に取得できますよ。」
生徒
「stat()って何ですか?難しそうです…」
先生
「stat()は、指定したファイルの状態を取得する関数です。サイズや更新日、作成日などの情報をまとめて教えてくれます。」
生徒
「なるほど!具体的にはどうやって使うんですか?」
先生
「それでは、基本的な使い方を見ていきましょう!」
1. osモジュールとは?
Pythonのosモジュールは、パソコンのファイルやフォルダを操作するための機能がたくさん入った道具箱のようなものです。ファイルの存在チェックや削除、作成、そして情報取得まで幅広く使えます。
2. os.stat()とは?
os.stat()は指定したファイルの情報を取得する関数です。返される情報には以下が含まれます:
- ファイルサイズ(バイト単位)
- 最終更新日(mtime)
- 作成日(ctime)
- アクセス日(atime)
例えば「report.txt」のサイズや更新日を知りたいときに使います。
3. ファイルサイズを取得する方法
import os
file_path = "report.txt"
stats = os.stat(file_path)
print("ファイルサイズ:", stats.st_size, "バイト")
ポイント:
stats.st_sizeでファイルのサイズを取得- サイズはバイト単位なので、1KB=1024バイトとして換算可能
ファイルサイズ: 2048 バイト
4. ファイルの更新日を取得する方法
更新日はstats.st_mtimeで取得できます。この値はUNIX時間(1970年1月1日からの秒数)で返されるので、人間が読める形式に変換する必要があります。
import os
from datetime import datetime
file_path = "report.txt"
stats = os.stat(file_path)
mod_time = datetime.fromtimestamp(stats.st_mtime)
print("最終更新日:", mod_time)
最終更新日: 2025-11-18 21:45:30
ポイント:
datetime.fromtimestamp()でUNIX時間を読みやすい日付形式に変換- 更新日や作成日を比較して、古いファイルを整理するのに便利
5. アクセス日や作成日を取得する方法
同じos.stat()でアクセス日や作成日も取得できます。
access_time = datetime.fromtimestamp(stats.st_atime)
create_time = datetime.fromtimestamp(stats.st_ctime)
print("最終アクセス日:", access_time)
print("作成日:", create_time)
最終アクセス日: 2025-11-18 20:30:00
作成日: 2025-11-15 14:10:22
ポイント:
st_atimeで最後にファイルを開いた日を確認st_ctimeで作成日を確認(OSによっては変更日になることもあります)
6. 実用例:古いファイルを探す
例えば、一定期間以上更新されていないファイルを見つけるときにos.stat()が役立ちます。
import os
from datetime import datetime, timedelta
threshold = datetime.now() - timedelta(days=30) # 30日以上前
file_path = "report.txt"
stats = os.stat(file_path)
mod_time = datetime.fromtimestamp(stats.st_mtime)
if mod_time < threshold:
print(file_path, "は30日以上更新されていません")
report.txt は30日以上更新されていません
このようにファイル管理やバックアップの判断に使えます。
7. 注意点
os.stat()で取得できる情報はOSによって細かい挙動が異なる場合があります- ファイルの存在を確認してから呼ぶのが安全です:
os.path.exists(file_path) - サイズや日付情報を使うと、自動バックアップや整理が簡単にできます