我正在开发OSX,我的书中指出:
调用
os.path.getsize(path)
将返回path参数中文件的大小(以字节为单位)。例如:
os.path.getsize('C:\\Windows\\System32\\calc.exe'`)
> 776192
它指出os.path.getsize()
给出的是以字节为单位的大小,但是当我尝试在桌面上找到文件夹的大小时,它会产生奇怪的结果。
桌面上有一个文件,即音乐。我在shell中编写了这段代码:
os.path.getsize('/Users/apple/Desktop/Music')
> 510
这意味着Music
的大小必须为510字节,但大小为1.32GB!
答案 0 :(得分:1)
这是因为您要求的是目录本身的大小,而不是其内容的大小。 Unix(OSX)中的目录被认为是包含元数据的特殊文件;描述文件系统上的目录的信息。 .getsize()
告诉你的是元数据只占用510个字节。
请注意,本书提供的第一个示例是询问名为calc.exe
的文件的大小,而不是目录。
要获取目录内容的总大小,您需要递归遍历整个层次结构并在每个文件上调用getsize()
。这是一个单行解决方案:
sum([os.path.getsize(f) for f in os.listdir('.') if os.path.isfile(f)])
其中'.'
是您尝试获取大小的目录的基本路径。
答案 1 :(得分:0)
您只要求目录分配的大小。不是其中的内容。 .debug_line
可以得到文件的大小。
注意:文件夹实际上被视为"空"如果它只包含子文件夹而没有文件。