Какой самый быстрый способ проверить, больше ли размер папки, чем определенный размер? - PullRequest
2 голосов
/ 10 марта 2010

Какой самый быстрый способ проверить, превышает ли размер папки определенный размер, скажем 10 МБ, 1 ГБ, 10 ГБ и т. Д., Без фактического расчета размера папки. Что-то вроде квоты. Решение Pythonic будет великолепным, но стандартные утилиты UNIX также приветствуются

Ответы [ 4 ]

4 голосов
/ 10 марта 2010
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)
2 голосов
/ 10 марта 2010

Я бы сказал, что это невозможно. Я не верю никаким размерам папок кеша файловых систем. Что бы вы ни делали, вам придется каким-то образом ходить по дереву. Использование du, вероятно, самый быстрый метод, поскольку все это будет происходить в C.

Если вы знаете максимальный ожидаемый или поддерживаемый размер файла, вы, возможно, могли бы немного оптимизировать его, подсчитав количество пустых файлов в каждой папке, а не размеры и сокращение в случае, когда не хватает файлов для удовлетворения лимита. *

1 голос
/ 10 марта 2010

вы можете использовать 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
1 голос
/ 10 марта 2010

Размер папки по-прежнему является общим размером содержимого папки.

Вы можете попробовать позвонить du -s foldername с питона

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...