繁体   English   中英

检查文件夹大小是否大于特定大小的最快方法是什么?

[英]What is the fastest way to check whether a folder size is greater than a specific size?

在没有实际计算文件夹大小的情况下,检查文件夹大小是否超出特定大小(如10 MB,1 Gb,10 GB等)的最快方法是什么。 像配额这样的东西。 Pythonic解决方案会很棒,但标准的UNIX实用程序也很受欢迎

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)

我不得不说这是不可能的。 我不相信任何文件系统缓存文件夹大小。 无论你做什么,都必须以某种方式走树。 使用du可能是最快的方法,因为它将在C中发生。

如果您知道预期或支持的最大文件大小,您可以通过计算每个文件夹中的内容而不是在没有足够的文件来满足限制的情况下的大小和快捷方式来优化一点。

文件夹大小仍然是文件夹内容的总大小。

您可以尝试从python中调用du -s foldername

你可以使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM