Pythonでファイルの更新日やサイズを取得する方法!初心者でもわかるos.stat()の使い方
生徒
「Pythonでファイルの情報って調べられますか?たとえば更新日時とかサイズとか…」
先生
「はい、できますよ!os.stat()という関数を使えば、ファイルのサイズや最終更新日、作成日時などを取得できます。」
生徒
「おお…なんか難しそう。でも知っておきたいです!」
先生
「大丈夫です。初心者向けに丁寧に説明しますね。まずは基本から見ていきましょう!」
1. os.stat()とは?
os.stat()は、Pythonでファイルやフォルダの情報を取得できる便利な関数です。ファイルサイズ(バイト単位)や、最終更新日時、作成日時など、さまざまな情報をまとめて取り出すことができます。
この関数はosモジュールに含まれているので、まずはimport osしてから使います。
2. ファイルサイズを取得する方法
ファイルのサイズはst_sizeという属性から取得できます。単位はバイト(B)です。
import os
info = os.stat("sample.txt")
print("ファイルサイズ:", info.st_size, "バイト")
このようにすることで、指定したファイルのサイズを確認できます。KB(キロバイト)で見たい場合は、st_size / 1024で計算しましょう。
3. 更新日時を取得する方法
os.stat()で取得できる日時は3種類あります:
st_atime:アクセス日時(最後に読まれた時刻)st_mtime:更新日時(最後に変更された時刻)st_ctime:作成日時(※OSにより意味が異なる)
日時の値は「エポック秒」と呼ばれる形式なので、datetimeモジュールで見やすい形式に変換します。
import os
from datetime import datetime
info = os.stat("sample.txt")
print("更新日時:", datetime.fromtimestamp(info.st_mtime))
これで、「2025-09-03 12:34:56」のように、人間にもわかりやすい形式で表示されます。
4. ファイルの作成日時を調べるには?
st_ctimeは、Windowsでは「作成日時」を示しますが、LinuxやMacでは「ファイルの属性が最後に変更された時刻」になります。
そのため、正確な「作成日時」を取得したい場合は、OSによって意味が変わることに注意が必要です。
print("作成日時:", datetime.fromtimestamp(info.st_ctime))
5. ファイル情報をまとめて表示するプログラム
それでは、これまでの知識を使って、ファイルのサイズ・更新日・作成日をまとめて表示する簡単なスクリプトを作ってみましょう。
import os
from datetime import datetime
def show_file_info(path):
info = os.stat(path)
print("ファイル名:", path)
print("サイズ:", info.st_size, "バイト")
print("最終更新日:", datetime.fromtimestamp(info.st_mtime))
print("作成日:", datetime.fromtimestamp(info.st_ctime))
show_file_info("sample.txt")
このプログラムを使えば、複数のファイルを調べることも簡単にできます。
6. 複数ファイルの情報を一括取得する方法
たとえば、あるフォルダの中にあるすべてのファイルの情報を一括で取得したい場合は、os.listdir()と組み合わせます。
folder = "documents"
for filename in os.listdir(folder):
path = os.path.join(folder, filename)
if os.path.isfile(path):
show_file_info(path)
このようにすれば、フォルダ内のすべてのファイルに対して、更新日時やサイズを取得できます。
7. 単位をわかりやすくする工夫
ファイルサイズはバイトで表示されますが、「12345678バイト」と言われても、ピンとこないですよね。そんなときは、KBやMB単位に変換しましょう。
size_kb = info.st_size / 1024
size_mb = info.st_size / (1024 * 1024)
print("サイズ(KB):", round(size_kb, 2))
print("サイズ(MB):", round(size_mb, 2))
round()で小数点を調整して、見やすい表示にできます。
8. ファイルが存在するかどうかを事前に確認しよう
対象のファイルが存在しない場合、os.stat()を使うとエラーになります。事前にos.path.exists()でチェックしておきましょう。
import os
if os.path.exists("sample.txt"):
info = os.stat("sample.txt")
else:
print("ファイルが存在しません")
このように安全確認を入れておけば、初心者でも安心してファイル操作ができます。