ファイルサイズを取得するには os.path.getsize() または pathlib.Path.stat() を使う。
import os
size = os.path.getsize('data.txt')
print(size) # バイト数
os.path.getsize() はファイルサイズをバイト単位で返す。ファイルが存在しない場合は FileNotFoundError が発生する。
pathlib を使う方法
pathlib では stat() メソッドでファイルの情報を取得し、st_size 属性でサイズを得る。
from pathlib import Path
path = Path('data.txt')
size = path.stat().st_size
print(size) # バイト数
人間が読みやすい形式に変換する
バイト数を KB や MB などの単位に変換する関数を作ると便利だ。
def format_size(size_bytes):
for unit in ['B', 'KB', 'MB', 'GB', 'TB']:
if size_bytes < 1024:
return f'{size_bytes:.1f} {unit}'
size_bytes /= 1024
return f'{size_bytes:.1f} PB'
import os
size = os.path.getsize('video.mp4')
print(format_size(size)) # 例: 256.5 MB
ディレクトリの合計サイズを取得する
ディレクトリ内のすべてのファイルの合計サイズを取得するには、再帰的にファイルを走査する。
from pathlib import Path
def get_directory_size(path):
total = 0
for file in Path(path).rglob('*'):
if file.is_file():
total += file.stat().st_size
return total
size = get_directory_size('mydir')
print(f'{size / (1024 ** 2):.2f} MB')
os.stat を使う方法
os.stat() を使うと、ファイルサイズ以外にも様々な情報を取得できる。
import os
stat_info = os.stat('data.txt')
print(stat_info.st_size) # ファイルサイズ(バイト)
print(stat_info.st_mtime) # 最終更新時刻(UNIX時間)
print(stat_info.st_mode) # ファイルモード(パーミッション)