【发布时间】:2010-12-31 12:31:55
【问题描述】:
我正在寻找一种在 Windows 上用 Python 计算文件夹大小的快速方法。这是我目前所拥有的:
def get_dir_size(path):
total_size = 0
if platform.system() == 'Windows':
try:
items = win32file.FindFilesW(path + '\\*')
except Exception, err:
return 0
# Add the size or perform recursion on folders.
for item in items:
attr = item[0]
name = item[-2]
size = item[5]
if (attr & win32con.FILE_ATTRIBUTE_DIRECTORY) and \
not (attr & win32con.FILE_ATTRIBUTE_SYSTEM): # skip system dirs
if name not in DIR_EXCLUDES:
total_size += get_dir_size("%s\\%s" % (path, name))
total_size += size
return total_size
当文件夹大小超过 100G 时,这还不够好。任何想法如何改进它?
在一台快速机器(2Ghz+ - 5G 内存)上,226,001 个文件和 12,043 个文件夹中超过 422GB 需要 72 秒。使用资源管理器属性选项需要 40 秒。
我知道我有点贪心,但我希望有更好的解决方案。
劳伦特·卢斯
【问题讨论】:
-
文件夹大小超过100G会怎样?你得到一个错误的答案,它是否完全失败,是否需要太长时间,还是什么?
-
在一台速度很快的机器(2Ghz+ - 5M 内存)上,226,001 个文件和 12,043 个文件夹中超过 422GB 需要 72 秒。我知道我有点贪心,但我希望有更好的解决方案。
-
@Laurent,最好编辑您的问题以包含这些统计信息。这对于帮助人们有效回答至关重要。您还可以报告使用资源管理器的属性对话框和“du”实用程序(例如来自 Unxutils)进行比较的时间。
-
dir /s > NUL在同一个文件夹上快很多吗? -
这听起来很像我对如此大量文件的期望。是什么让你认为它可以做得更快? Windows 的内置文件大小计数器是否明显更快?
标签: python windows size directory