我从Stack Overflow上的一个问题中获取了代码来测量目录的大小:
def dirSize(directory):
totalSize = 0
for dirpath, dirnames, filenames in os.walk(directory):
for f in filenames:
fp = os.path.join(dirpath, f)
totalSize += os.path.getsize(fp)
return totalSize
但如果我有这个目录:
ls -l
-rw-r--r-- 1 lucas lucas 5120000 Oct 18 17:36 x
lrwxrwxrwx 1 lucas lucas 1 Oct 18 17:34 y -> x
我在上面运行该功能,我明白了:
10240000
它似乎将符号链接计为它们链接到的文件的大小,而不是实际的4KB。我该如何解决这个问题?
答案 0 :(得分:1)
怎么样
totalSize += os.path.getsize(fp) if not os.path.islink(fp) else 4096
答案 1 :(得分:1)
只需将参数followlinks=False
传递给os.walk
即可。有关详细信息,请参阅documentation。