.getsize
не работает с каталогом. Это даст вам размер файла , а не каталога - вот почему вы получаете 0 для всего.
Метод расчета размера каталога - это пройти через все подкаталоги рекурсивно суммируют размеры каждого файла.
Или, по крайней мере, это то, что вы делали бы до того, как у нас было pathlib
root_dir = Path("path/to/directory")
root_dir_size = sum([f.stat().st_size for f in root_dir.glob('**/*') if f.is_file()])
Это приведет к root_dir_size
байтам, затем вы можете обработать это как хотите.
Почему это нужно сделать миллиардом строк, когда одной строки достаточно?
Изменить: Действительно легко работать с любыми типами каталогов, с полным путем или без - но я полагаю, мне следует прояснить и это, поскольку OP попросил.
Замените это-
dir = os.path.join(root, dir)
Total_size = os.path.getsize(dir)
на это
root_subdir = Path(os.path.join(root, dir))
Total_size = sum([f.stat().st_size for f in root_subdir.glob('**/*') if f.is_file()])