1

我从 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。我怎样才能解决这个问题?

4

2 回答 2

1

怎么样

totalSize += os.path.getsize(fp) if not os.path.islink(fp) else 4096 
于 2013-10-18T21:45:25.783 回答
1

只需将参数传递followlinks=Falseos.walk. 有关更多信息,请参阅文档

于 2013-10-18T21:46:07.387 回答