本記事では、指定したパス内にある全てのフォルダ(ディレクトリ)の容量サイズを取得して、降順にソートしてcsvファイルへ出力する雛形コードを載せました。
下図がその実施例で、指定したパス「D:/program/python/98_抽出」内のフォルダ毎の容量をランキング表示しています。

■本プログラム
import os
import pandas as pd
def convert_format_size_func(file_size):
bit = { "KB": 10, "MB": 20, "GB": 30, "TB": 40}
for unit, bit_shift in bit.items():
val = file_size / float(1 << bit_shift)
if val < 1000:
break
return "{:,.1f}".format(val) + " " + unit
def get_dir_size_func(path='.'):
sum = 0
with os.scandir(path) as it:
for entry in it:
if entry.is_file():
sum += entry.stat().st_size
elif entry.is_dir():
sum += get_dir_size_func(entry.path)
return sum
def main():
dir_size_list = []
for entry in os.scandir(my_path):
if entry.is_file():
pass
else:
my_size = get_dir_size_func(entry)
dir_size_list.append([my_size, entry.path])
df = pd.DataFrame(dir_size_list, columns = ['size', 'path'])
df_s = df.sort_values(['size'], ascending=False)
my_size_list = df_s['size'].to_list()
my_new_size_list = []
for my_size in my_size_list:
my_new_size = convert_format_size_func(my_size)
my_new_size_list.append(my_new_size)
df_s['size'] = my_new_size_list
print(df_s)
df_s.to_csv('dir_size_list.csv', index=False)
if __name__ == '__main__':
my_path = "D:/program/python/98_抽出"
main()
print("finished")
以上
<広告>
リンク