カテゴリ: 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
Django
Djangoプロジェクトのディレクトリ構造を完全解説!初心者でも迷わないフォルダの見方
New2
Flask
Flask×Flask-SocketIOでチャットアプリを作る流れを初心者向けにやさしく解説
New3
Flask
Flaskアプリの作り方を基礎から学ぼう!初心者が覚えるべき開発の流れとは?
New4
Flask
Flask-WTFでファイルアップロードフォームを完全ガイド!初心者でもわかる画像やPDFのアップロード方法
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Flask
Flask-Loginでユーザー認証を完全ガイド!初心者でもわかるログイン処理の作り方
No.3
Java&Spring記事人気No3
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.4
Java&Spring記事人気No4
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.5
Java&Spring記事人気No5
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
No.6
Java&Spring記事人気No6
Python
Pythonでリストを文字列に変換する方法を完全ガイド!初心者でもわかるjoinの使い方
No.7
Java&Spring記事人気No7
Python
Pythonのmatch文(パターンマッチング)とは?switch文の代替としての使い方をやさしく解説
No.8
Java&Spring記事人気No8
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本