Выполнить функцию, пока значение var находится в пределах 2 порогов - PullRequest
0 голосов
/ 13 мая 2019

У меня есть скрипт, который очищает журналы в файловой системе. Мне нужно, чтобы мой код выполнял 2 функции (очистка, проверка размера) внутри со списком каталогов. Моя проблема в том, что я не могу выполнить итерации между двумя порогами, которые я определил.

Это мой код:

count = 0
success = False

tmin = 90
tmax = 95

if (size > tmax):
    for directorio in directorios:
        count += 1
        if success:
            break
        for directorio in zip(*directorios[count - 1]):
            ruta = directorio[1]+'/builds/'
            if os.path.exists(ruta):
                flushdir(ruta)
                size = int(get_path_perc(path))
                print ("Has been removed: ", ruta)
            if (size <= tmin):
                success = True
                break

Flushdir - это функция, которая удаляет каталоги, а размер - это функция, которая проверяет свободное место. Фактический результат заключается в том, что функции выполняются только в первом threshold(tmax), но не в tmin, и мне нужно, чтобы функции выполнялись в обоих порогах.

Заранее спасибо.

1 Ответ

0 голосов
/ 13 мая 2019

Вместо того, чтобы делать сложные вещи, основанные на нескольких for циклах, настройке переменных и обусловленных break, разве нельзя сделать что-то более простое с одним while?

tmin = 90
tmax = 95

size = int(get_path_perc(path))
if size > tmax:  # cleaning process needed
    index = 0  # starts at first directory...
    while size > tmin:  # ... until size is lower than `tmin`
        ruta = os.join(zip(*directorios[index])[1], 'builds')
        if os.path.exists(ruta):
            flushdir(ruta)
            size = int(get_path_perc(path))
            print ("Has been removed: ", ruta)
        index += 1  # consider next directory in next iteration

Это не проверено, и этот zip звонок на directorios кажется подозрительным, но не зная, что в directorios, трудно сделать лучше ...

...