カテゴリ: Python 更新日: 2025/12/17

Pythonでファイルの更新日やサイズを取得する方法!os.stat()を初心者向けに解説

Pythonでファイルの更新日やサイズを取得する方法(os.stat() の使い方)
Pythonでファイルの更新日やサイズを取得する方法(os.stat() の使い方)

先生と生徒の会話形式で理解しよう

生徒

「先生、Pythonでファイルのサイズや更新日を知りたいときはどうすればいいですか?」

先生

「それにはPythonのosモジュールのstat()関数を使う方法があります。ファイルの情報を簡単に取得できますよ。」

生徒

「stat()って何ですか?難しそうです…」

先生

stat()は、指定したファイルの状態を取得する関数です。サイズや更新日、作成日などの情報をまとめて教えてくれます。」

生徒

「なるほど!具体的にはどうやって使うんですか?」

先生

「それでは、基本的な使い方を見ていきましょう!」

1. osモジュールとは?

1. osモジュールとは?
1. osモジュールとは?

Pythonのosモジュールは、パソコンのファイルやフォルダを操作するための機能がたくさん入った道具箱のようなものです。ファイルの存在チェックや削除、作成、そして情報取得まで幅広く使えます。

2. os.stat()とは?

2. os.stat()とは?
2. os.stat()とは?

os.stat()は指定したファイルの情報を取得する関数です。返される情報には以下が含まれます:

  • ファイルサイズ(バイト単位)
  • 最終更新日(mtime)
  • 作成日(ctime)
  • アクセス日(atime)

例えば「report.txt」のサイズや更新日を知りたいときに使います。

3. ファイルサイズを取得する方法

3. ファイルサイズを取得する方法
3. ファイルサイズを取得する方法

import os

file_path = "report.txt"
stats = os.stat(file_path)
print("ファイルサイズ:", stats.st_size, "バイト")

ポイント:

  • stats.st_sizeでファイルのサイズを取得
  • サイズはバイト単位なので、1KB=1024バイトとして換算可能

ファイルサイズ: 2048 バイト

4. ファイルの更新日を取得する方法

4. ファイルの更新日を取得する方法
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. アクセス日や作成日を取得する方法

5. アクセス日や作成日を取得する方法
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. 実用例:古いファイルを探す

6. 実用例:古いファイルを探す
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. 注意点

7. 注意点
7. 注意点
  • os.stat()で取得できる情報はOSによって細かい挙動が異なる場合があります
  • ファイルの存在を確認してから呼ぶのが安全です:os.path.exists(file_path)
  • サイズや日付情報を使うと、自動バックアップや整理が簡単にできます
カテゴリの一覧へ
新着記事
New1
Flask
認証と認可の違いを整理しよう!Flaskで押さえるべき基礎概念
New2
Flask
Flaskで非同期フォーム送信(Ajax POST)を実装する方法を解説!初心者でもわかるステップ解説
New3
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
New4
Python
PythonでMySQLに接続する方法!pymysqlの基本的な使い方
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.2
Java&Spring記事人気No2
Flask
Flaskでデータベースを使う基本!SQLAlchemyの導入方法をやさしく解説
No.3
Java&Spring記事人気No3
Python
Pythonでリストの要素を検索・取得する方法!index()やin演算子の活用法
No.4
Java&Spring記事人気No4
Python
Pythonのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.5
Java&Spring記事人気No5
Python
Pythonで仮想環境(venv)を作る方法!初心者向けに環境構築をステップ解説
No.6
Java&Spring記事人気No6
Python
Pythonプログラムの書き方を基礎から学ぼう!初心者が覚えるべき文法とは?
No.7
Java&Spring記事人気No7
Flask
Flaskアプリの環境変数をクラウドで安全に設定する方法!初心者のための完全ガイド
No.8
Java&Spring記事人気No8
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう