2

将目录的大小与 Unix 和 python 进行比较时,我的结果略有不同(“磁盘使用率”小 5%)。为什么 ?(我所有的子文件夹都是可读的;我在 Mac OSX Mountain lion 下工作,python 版本 2.7.2)

这是我的代码:

import os, sys
from commands import getstatusoutput

def get_size(start_path = '.'):
    total_size = 0
    for dirpath, dirnames, filenames in os.walk(start_path):
        for f in filenames:
            fp = os.path.join(dirpath, f)
            total_size += os.path.getsize(fp)
    return total_size/1024

def get_size2(start_path = '.'):
    cmd = "du -ks "+start_path    # result in blocks of 1024 bytes
    code_err, output = getstatusoutput(cmd)
    return int(output.split()[0])

print get_size()
# 306789
print get_size2()
# 321328

预先感谢您的回答,

埃里克。

4

1 回答 1

3

通常,du它会为您提供数据在磁盘上占用的存储量,而许多其他测量数据的方法将为您提供数据的大小。

为什么这不一样?

  • 有时数据可以非常有效地存储,并且需要的存储空间比其原始大小要少。如果您有稀疏文件硬链接,就会发生这种情况。虽然这两个在 Unix*ish 文件系统上很常见,但可能还有其他事情,这取决于您的文件系统的怪异。
  • 有时数据在磁盘上需要的空间比它最初的大小要多。这是相当正常的,因为所有文件系统都按块对其文件数据进行排序,并且数据并不总是以块大小的倍数出现。这意味着最后一个块的某些部分通常被浪费(即被占用但未使用)。
于 2019-03-19T12:57:29.333 回答