この記事では、Python でファイルのステータスを取得する方法を解説します。
スポンサーリンク
ファイルのステータスの取得
ファイルのステータスを取得するには、os
モジュール の stat()
関数 を使います。
import os
os.stat(path, *, dir_fd=None, follow_symlinks=True)
path
引数 に文字列や開いているファイル記述子を指定することで、そのファイルの状態を stat_result
オブジェクト として返します。
シンボリックリンク自体のステータスを取得したい場合は、follow_symlinks
引数 に False
を指定します。
取得できるステータスについては以下のリンクを参照してください。
Linkos.stat_result - os --- 雑多なオペレーティングシステムインターフェース — Python ドキュメント
サンプル
試しに適当なファイルのステータスを確認してみます。
import os
statinfo = os.stat('main.py')
print(statinfo)
実行結果
os.stat_result(st_mode=33188, st_ino=35317513, st_dev=16777220, st_nlink=1, st_uid=504, st_gid=20, st_size=58, st_atime=1645516069, st_mtime=1645516069, st_ctime=1645516069)
ファイル記述子から取得
ファイル記述子からステータスを取得する場合、os.fstat()
関数 が使える。この関数は、Python 3.3 以降では os.stat(fd)
と等価です。
import os
os.fstat(fd)
サンプル
試しにファイルディスクリプタからステータスを取得してみます。
with open('main.py', 'r') as f:
statinfo = os.fstat(f.fileno())
print(statinfo)
実行結果
os.stat_result(st_mode=33188, st_ino=35317513, st_dev=16777220, st_nlink=1, st_uid=504, st_gid=20, st_size=146, st_atime=1645520137, st_mtime=1645520137, st_ctime=1645520137)
シンボリックリンクをたどらない場合
シンボリックリンクをたどらない場合、os.lstat()
関数 が使える。
この関数は、Python 3.3 以降では os.stat()
関数 の follow_symlinks
引数 を False
にして使うのと等価です。
import os
os.lstat(path, *, dir_fd=None)
サンプル
Windows で適当にショートカットを作成し、ステータスを取得してみます。
import os
statinfo = os.lstat('hello.py - ショートカット.lnk')
print(statinfo)
実行結果
os.stat_result(st_mode=33206, st_ino=106397541196741399, st_dev=2789529968, st_nlink=1, st_uid=0, st_gid=0, st_size=628, st_atime=1645521315, st_mtime=1645517562, st_ctime=1645517562)