差异您好StackOverflow伙计, 长期阅读器,第一次海报。希望我已经得到了所有的信息来提出一个有用的问题。看起来shutil.disk_usage()
我正在使用shutil.disk_usage()函数来查找特定路径(可用量,已用量等)的当前磁盘使用情况。据我所知,这是os.statvfs()调用的一个包装。与Linux中“du”的输出相比,我发现它没有给出我期望的答案。
为了保护公司隐私的原因,我已经隐藏了一些路径,但输出和代码被否决。我正在使用Python 3.3.2 64位版本。
#!/apps/python/3.3.2_64bit/bin/python3
# test of shutils.diskusage module
import shutil
BytesPerGB = 1024 * 1024 * 1024
(total, used, free) = shutil.disk_usage("/data/foo/")
print ("Total: %.2fGB" % (float(total)/BytesPerGB))
print ("Used: %.2fGB" % (float(used)/BytesPerGB))
(total1, used1, free1) = shutil.disk_usage("/data/foo/utils/")
print ("Total: %.2fGB" % (float(total1)/BytesPerGB))
print ("Used: %.2fGB" % (float(used1)/BytesPerGB))
,输出:
/data/foo/drivecode/me % disk_usage_test.py
Total: 609.60GB
Used: 291.58GB
Total: 609.60GB
Used: 291.58GB
正如你可以看到,主要的问题是我所期望的“二手”要小的多的第二量,因为它是第一个目录的一个子集。
/data/foo/drivecode/me % du -sh /data/foo/utils
2.0G /data/foo/utils
尽管我信任“du”,但我发现很难相信Python模块也不正确。所以也许这只是我对Linux文件系统的理解,可能是问题所在。 :)
我写了一个模块(很大程度上基于某人在这里的代码)递归获取disk_usage,我一直在使用它。它看起来与“du”输出相匹配,但是比shutil.disk_usage()函数慢得多,所以我希望我可以让它工作。
非常感谢。
功能'shutil.disk_usage'是给你的“盘”不使用“目录”的用法。你从它得到的东西应该与'df -h'而不是'du -sh'进行比较。 – crayzeewulf