ディスク容量取得は「容量不足による業務停止」を防ぐための重要スキル
業務自動化では、ディスク容量の監視が非常に重要です。
「バックアップ前に空き容量を確認したい」「ログが増えすぎてサーバーが止まるのを防ぎたい」「容量が一定以下なら警告したい」など、実務では欠かせない処理です。
Pythonでは shutil.disk_usage() を使うことで、初心者でも簡単にディスク容量を取得できます。
ここでは、基本から実務テンプレートまで丁寧に解説します。
ディスク容量取得の基本:shutil.disk_usage
取得できる3つの値を理解する
shutil.disk_usage(path) は、指定したパスが存在するドライブの容量情報を返します。
import shutil
usage = shutil.disk_usage("/")
print(usage)
Python返ってくる値は次の3つです。
- total(総容量)
- used(使用済み容量)
- free(空き容量)
これらはすべて バイト単位 で返されます。
人間が読みやすい単位(GB / MB)に変換する
バイトのままだと直感的に分かりにくい
import shutil
usage = shutil.disk_usage("/")
total_gb = usage.total / 1024 / 1024 / 1024
used_gb = usage.used / 1024 / 1024 / 1024
free_gb = usage.free / 1024 / 1024 / 1024
print(f"総容量: {total_gb:.2f} GB")
print(f"使用中: {used_gb:.2f} GB")
print(f"空き容量: {free_gb:.2f} GB")
Python深掘りポイント
- 1024 を3回割ると GB になる
:.2fは「小数点以下2桁まで表示」- ログやレポートに出すときは GB 表示が圧倒的に見やすい
例題①:空き容量が一定以下なら警告を出す
シナリオ
空き容量が 10GB 以下なら警告したい。
import shutil
usage = shutil.disk_usage("/")
free_gb = usage.free / 1024 / 1024 / 1024
if free_gb < 10:
print("警告: 空き容量が不足しています!")
else:
print("空き容量は十分です:", f"{free_gb:.2f} GB")
Python深掘りポイント
- 業務バッチの前に容量チェックを入れると「容量不足で処理が止まる」事故を防げる
- サーバー運用では必須の処理
例題②:バックアップ前に容量をチェックして処理可否を判断する
シナリオ
バックアップ対象のファイルサイズが 5GB。
空き容量が足りなければバックアップを中止したい。
import shutil
import os
backup_target = "data/bigfile.dat"
target_size_gb = os.path.getsize(backup_target) / 1024 / 1024 / 1024
usage = shutil.disk_usage("/")
free_gb = usage.free / 1024 / 1024 / 1024
if free_gb < target_size_gb:
print("バックアップ中止: 空き容量不足")
else:
print("バックアップ可能:", f"必要 {target_size_gb:.2f} GB / 空き {free_gb:.2f} GB")
Python深掘りポイント
- 「必要容量」と「空き容量」を比較するのは実務で非常に重要
- 大容量ファイルを扱う業務では必須のチェック
例題③:複数ドライブの容量をまとめてレポートする
シナリオ
Windows の C ドライブと D ドライブの容量を一覧化したい。
import shutil
drives = ["C:\\", "D:\\"]
for d in drives:
usage = shutil.disk_usage(d)
total = usage.total / 1024 / 1024 / 1024
free = usage.free / 1024 / 1024 / 1024
print(f"{d} 総容量: {total:.2f} GB / 空き: {free:.2f} GB")
Python深掘りポイント
- 複数ドライブを監視することで「どこが逼迫しているか」が一目で分かる
- サーバー運用やバックアップ運用でよく使う
pathlib を使った書き方(内部的には同じ)
Path を使っても disk_usage は同じように使える
from pathlib import Path
import shutil
p = Path("/")
usage = shutil.disk_usage(p)
print(usage)
Pythonメリット
- pathlib を使うとパス操作が統一されて読みやすい
- ただし disk_usage の挙動は os と同じ
ディスク容量取得を業務で使う際の注意点
- 容量は「バイト単位」で返るため、GB などに変換して扱う
- 空き容量が少ないとファイル書き込みが失敗する可能性がある
- バックアップやログ出力の前に容量チェックを入れると安全
- サーバー運用では「閾値(しきい値)」を決めて警告を出すのが一般的
ディスク容量チェックは、業務自動化の信頼性を大きく高める重要な処理です。
