代码
import os
def 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 / 1024
return 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 = 0
for 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_size
def 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 )
输出
