ハードディスクやSSDの容量が減ってきたけど、どこで使っちゃっているんだろう?
そんなときのために、指定ディレクトリにあるフォルダごとに容量を調べる方法をご紹介します。
やること
・すべてのファイルとフォルダを調べて総容量を求める
・これらを指定ディレクトリ下のフォルダを対象に実施して結果表示する
それでは順番に見ていきましょう!
目次
順番にみていく
すべてのファイルとフォルダを調べて総容量を求める
調べたいディレクトリのパスを指定して、その下にあるファイルとフォルダすべてについて、容量を調べます。
加算していって総容量を求めます。
import os
from pathlib import Path
total_size = 0
with os.scandir(folder_path) as it:
for item in it:
if item.is_file():
total_size += item.stat().st_size
elif item.is_dir():
total_size += get_folder_size(item.path)
return total_size
どんなファイルやフォルダがあるか調べているのが次です。
import os
with os.scandir(folder_path) as it:
容量を調べて加算しているのが次です。
import os
if item.is_file():
total_size += item.stat().st_size
ちょっと変わっていますが、フォルダの場合は、自身を関数にしてもういちど実行させています。
def get_folder_size(folder_path):
total_size = 0
with os.scandir(folder_path) as it:
for item in it:
if item.is_file():
total_size += item.stat().st_size
elif item.is_dir():
total_size += get_folder_size(item.path)
return total_size
これらを指定ディレクトリ下のフォルダを対象に実施して結果表示する
先ほどの関数を利用します。
指定ディレクトリ下のフォルダについて実施して結果表示します。
import os
from pathlib import Path
folder_path = f"./"
for item in os.scandir(folder_path):
if item.is_dir():
folder_size = get_folder_size(item.path)
print(f"{item.name}: {folder_size/1024/1024/1024:.3f} GB")
次の部分でフォルダだけを対象にしています。
for item in os.scandir(folder_path):
if item.is_dir():
圧縮後のファイルを、指定ディレクトリ下に置きたかったので、絶対パス指定で圧縮後のファイル名を設定しました。
サンプルコード
これらを合体したものがこちらです。
import os
from pathlib import Path
def get_folder_size(folder_path):
total_size = 0
with os.scandir(folder_path) as it:
for item in it:
if item.is_file():
total_size += item.stat().st_size
elif item.is_dir():
total_size += get_folder_size(item.path)
return total_size
folder_path = f"./"
for item in os.scandir(folder_path):
if item.is_dir():
folder_size = get_folder_size(item.path)
print(f"{item.name}: {folder_size/1024/1024/1024:.3f} GB")
今回は対象を実行ファイルの直下にしました。
実行結果がこちらです。
無事「A」「B」「C」それぞれのフォルダの容量を調べることができました。
以上です。
少しでもお役に立てれば幸いです。
それでは、読んで頂きありがとうございました!