gpt4 book ai didi

python - 在python中获取子目录的目录大小

转载 作者:太空宇宙 更新时间:2023-11-04 06:01:06 24 4
gpt4 key购买 nike

我有一个目录,其中有多个子目录,子目录中可能还有子目录。

Folder
+-Sub1
| +-SubSub1
| +-File1
+-Sub2
| +-File2
+-Sub3
| +-File3
| +-File4
+-Sub4
+-File5
+-SubSub2
+-File6

我想完整地获取每个子文件夹(Sub1、Sub2 等)的大小。我还需要获取每个文件夹的名称。例如:

Sub1 is 34 MB
Sub2 is 2893 MB
...

我目前有以下内容:

for r, d, f in os.walk(directory):
size = sum(getsize(join(r,n)) for n in f) / 1048576
print size
for s in d:
print s

它打印出所有大小后跟所有目录名称,因为它们每个都在单独的 for 循环中。如何按上述方式打印?

最佳答案

作为第一步,试试这个:

import os
for r, d, f in os.walk('.'):
size = sum(os.path.getsize(os.path.join(r,n)) for n in f) / 1048576
print "{} is {}".format(r, size)

在我的电脑上,结果是这样的:

. is 1
./Sub4 is 1
./Sub4/SubSub2 is 1
./Sub3 is 2
./Sub2 is 1
./Sub1 is 1
./Sub1/SubSub1 is 0

这至少会在相关大小旁边打印目录名称。

作为下一步,您需要找到一种方法将下级目录的大小加总为父目录的大小。在此示例中,我使用字典来记住子目录的大小:

import os
dir_sizes = {}
for r, d, f in os.walk('.', False):
size = sum(os.path.getsize(os.path.join(r,f)) for f in f+d)
size += sum(dir_sizes[os.path.join(r,d)] for d in d)
dir_sizes[r] = size
print "{} is {} MB".format(r, size/2**20)

结果(每个FileN为1MB):

./Sub4/SubSub2 is 1 MB
./Sub4 is 2 MB
./Sub3 is 2 MB
./Sub2 is 1 MB
./Sub1/SubSub1 is 0 MB
./Sub1 is 1 MB
. is 6 MB

关于python - 在python中获取子目录的目录大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25024371/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com