Python 業務自動化 | ファイル・フォルダ自動化:基本操作 - ディスク容量取得

Python Python
スポンサーリンク

ディスク容量取得は「容量不足による業務停止」を防ぐための重要スキル

業務自動化では、ディスク容量の監視が非常に重要です。
「バックアップ前に空き容量を確認したい」「ログが増えすぎてサーバーが止まるのを防ぎたい」「容量が一定以下なら警告したい」など、実務では欠かせない処理です。

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 などに変換して扱う
  • 空き容量が少ないとファイル書き込みが失敗する可能性がある
  • バックアップやログ出力の前に容量チェックを入れると安全
  • サーバー運用では「閾値(しきい値)」を決めて警告を出すのが一般的

ディスク容量チェックは、業務自動化の信頼性を大きく高める重要な処理です。

タイトルとURLをコピーしました