检查文件夹大小是否超出特定大小(如10 MB,1 Gb,10 GB等)的最快方法是什么,而不实际计算文件夹大小。像配额这样的东西。 Pythonic解决方案会很棒,但标准的UNIX实用程序也很受欢迎
答案 0 :(得分:4)
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)
答案 1 :(得分:2)
我不得不说这是不可能的。我不相信任何文件系统缓存文件夹大小。无论你做什么,都必须以某种方式走树。使用du
可能是最快的方法,因为它将在C中发生。
如果您知道预期或支持的最大文件大小,您可以通过计算每个文件夹中的内容来优化一点,而不是在没有足够的文件来满足限制的情况下的大小和快捷方式。
答案 2 :(得分:2)
您可以使用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
答案 3 :(得分:1)
文件夹大小仍然是文件夹内容的总大小。
您可以尝试从python
中调用du -s foldername