【发布时间】:2011-01-25 18:34:45
【问题描述】:
在不实际计算文件夹大小的情况下,检查文件夹大小是否超出特定大小(例如 10 MB、1 Gb、10 GB 等)的最快方法是什么。配额之类的东西。 Pythonic 解决方案会很棒,但也欢迎标准 UNIX 实用程序
【问题讨论】:
在不实际计算文件夹大小的情况下,检查文件夹大小是否超出特定大小(例如 10 MB、1 Gb、10 GB 等)的最快方法是什么。配额之类的东西。 Pythonic 解决方案会很棒,但也欢迎标准 UNIX 实用程序
【问题讨论】:
文件夹大小仍然是文件夹内容的总大小。
您可以尝试从 python 调用du -s foldername
【讨论】:
我不得不说这是不可能的。我不相信任何文件系统缓存文件夹大小。无论您做什么,都必须以某种方式在树上行走。使用du 可能是最快的方法,因为这一切都将在 C 中发生。
如果您知道预期或支持的最大文件大小,您或许可以通过计算每个文件夹中的实体而不是大小和在没有足够文件来满足限制的情况下的快捷方式来进行一些优化。
【讨论】:
您可以使用du -sb,它仍然需要计算文件夹大小.eg
threshold=1024000 #bytes
path="/your/path"
s=$(du -sb "$path")
set -- $s
size=$1
if [ "$size" -gt $threshold ];then
echo "size of $path greater than $threshold"
fi
【讨论】:
import os
from os.path import join, getsize
def getsize_limited(directory, limit):
total_size = 0
for root, dirs, files in os.walk(directory, topdown=False):
for name in files:
total_size += getsize(join(root, name))
if total_size > limit:
return limit, False
return total_size, True
例子:
size, within_limit = getsize_limited(os.getcwd(), limit=10**6)
【讨论】: