get_directory_size.py
import os import matplotlib.pyplot as plt def get_size_format(b, factor=1024, suffix="B"): """ Scale bytes to its proper byte format e.g: 1253656 => '1.20MB' 1253656678 => '1.17GB' """ for unit in ["", "K", "M", "G", "T", "P", "E", "Z"]: if b < factor: return f"{b:.2f}{unit}{suffix}" b /= factor return f"{b:.2f}Y{suffix}" def get_directory_size(directory): """Returns the `directory` size in bytes.""" total = 0 try: # print("[+] Getting the size of", directory) for entry in os.scandir(directory): if entry.is_file(): # if it's a file, use stat() function total += entry.stat().st_size elif entry.is_dir(): # if it's a directory, recursively call this function try: total += get_directory_size(entry.path) except FileNotFoundError: pass except NotADirectoryError: # if `directory` isn't a directory, get the file size then return os.path.getsize(directory) except PermissionError: # if for whatever reason we can't open the folder, return 0 return 0 return total def plot_pie(sizes, names): """Plots a pie where `sizes` is the wedge sizes and `names` """ plt.pie(sizes, labels=names, autopct=lambda pct: f"{pct:.2f}%") plt.title("Different Sub-directory sizes in bytes") plt.show() if __name__ == "__main__": import sys folder_path = sys.argv[1] directory_sizes = [] names = [] # iterate over all the directories inside this path for directory in os.listdir(folder_path): directory = os.path.join(folder_path, directory) # get the size of this directory (folder) directory_size = get_directory_size(directory) if directory_size == 0: continue directory_sizes.append(directory_size) names.append(os.path.basename(directory) + ": " + get_size_format(directory_size)) print("[+] Total directory size:", get_size_format(sum(directory_sizes))) plot_pie(directory_sizes, names)Join 50,000+ Python Programmers & Enthusiasts like you!
Email address Subscribe This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.Ethical Hacking with Python EBook
Web Security with Python EBook
Cryptography with Python EBook
Practical Python PDF Processing EBook
Real-Time Traffic Monitoring System with YOLOv9 eBook
Mastering YOLO: Build an Automatic Number Plate Recognition System
© 2026 The Python Code. All rights reserved.