INIT: premier commit
This commit is contained in:
58
main.py
Normal file
58
main.py
Normal file
@@ -0,0 +1,58 @@
|
||||
# This script computes the sizes of the folders listed in args.json
|
||||
|
||||
import os
|
||||
import json
|
||||
import csv
|
||||
from tqdm import tqdm
|
||||
|
||||
class Folder:
|
||||
def __init__(self, folder_path, desc_prefix=""):
|
||||
self.folder_path = folder_path
|
||||
self.size = 0
|
||||
self.files = 0
|
||||
self.desc_prefix = desc_prefix
|
||||
|
||||
def desc(self) -> str:
|
||||
return f"{self.desc_prefix}{self.folder_path} - {self.size}B"
|
||||
|
||||
def get_size(self) -> int:
|
||||
"""Return the size in Bytes of the folder"""
|
||||
p_bar = tqdm(desc=self.desc(), unit=' file')
|
||||
for path, dirs, files in os.walk(self.folder_path):
|
||||
for f in files:
|
||||
fp = os.path.join(path, f)
|
||||
self.size += os.path.getsize(fp)
|
||||
self.files += 1
|
||||
p_bar.set_description(self.desc(), refresh=False)
|
||||
p_bar.update()
|
||||
|
||||
p_bar.set_description(self.desc(), refresh=True)
|
||||
p_bar.close()
|
||||
return self.size
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Initialize CSV
|
||||
csv_file = open('output.csv', 'w', newline='')
|
||||
spamwriter = csv.writer(csv_file, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL)
|
||||
spamwriter.writerow(['folder_path', 'size_B', 'files'])
|
||||
|
||||
folders = []
|
||||
|
||||
with open('args.json', 'r') as file:
|
||||
data = json.load(file)
|
||||
|
||||
nb_folders = len(data['folder_paths'])
|
||||
|
||||
for i, folder_path in enumerate(data['folder_paths']):
|
||||
folders.append(Folder(folder_path, desc_prefix=f"[{i+1: >3}/{nb_folders}] "))
|
||||
|
||||
# Calculate the size of all folders
|
||||
for folder in folders:
|
||||
folder.get_size()
|
||||
# Write info in CSV
|
||||
spamwriter.writerow([folder.folder_path, folder.size, folder.files])
|
||||
|
||||
csv_file.close()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user