代码
import osdef format_size(size_in_bytes):if size_in_bytes < 1024: return f"{size_in_bytes} B"elif size_in_bytes < 1024 * 1024: size_in_kb = size_in_bytes / 1024return f"{size_in_kb:.2f} KB"elif size_in_bytes < 1024 * 1024 * 1024: size_in_mb = size_in_bytes / (1024 * 1024)return f"{size_in_mb:.2f} MB"else: size_in_gb = size_in_bytes / (1024 * 1024 * 1024)return f"{size_in_gb:.2f} GB"def get_dir_size(directory):total_size = 0for root, dirnames, filenames in os.walk(directory):for filename in filenames:filepath = os.path.join(root, filename)try:total_size += os.path.getsize(filepath)except OSError as e:print(f"无法访问文件 {filepath}: {e}")return total_sizedef list_dir_sizes(directory):some = []for name in os.listdir(directory):path = os.path.join(directory, name)if os.path.isfile(path):size = os.path.getsize(path)one = name, size, "File"else:size = get_dir_size(path)one = name, size, "Dir"some.append(one)some.sort(key=lambda x: x[1], reverse=True)for one in some:print(format_size(one[1]).ljust(22), one[2].ljust(22), one[0])if __name__ == "__main__":dir_path = r"E:\_pub\CosyVoice"list_dir_sizes(dir_path )
输出
