problème boucle for if else priorisation conditions
Bonjour
je sollicite votre aide car je bute sur des imbrications de conditions (boucle for + if elif else).
J'ai fait un petit programme qui a pour but de récupérer la valeur de l'espace disque windows utilisé (converti en %) pour ensuite le comparer à un seuil défini .
en fonction de cette comparaison je souhaite si le seuil critique d'espace occupé est dépassé déclencher 2 conditions mais avec une priorisation , à savoir si seuil critique < espace disque occupé alors "supprimer tous les répertoires (préfixés en "*_SAV" plus ancien de 3 jours en priorité (dans mon script les 3 jours sont simulés par 2min (120s) pour accélérer le test) .
par contre je souhaite que si il n'y a pas de dossier > 3 jours qu'il supprime dans ce cas ceux étant plus récents que 3 jours.
pour ces 2 cas j'y parviens sans souci par contre j'ai une enieme condition dans laquelle je veux que si il y a un mélanges de dossiers > 3 jours et < 3 jours seulement ceux > à 3 jours soient supprimés et que les inférieurs à 3 jours (les plus récents) eux soient conservés.
j'ai essayé un nombre incalculable de combinaisons (if elif else, if else if else, etc mais sans succès)
voici ma version de script
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| import os, glob, time, stat
from os import path
from shutil import disk_usage
import shutil
#commande pour déterminer les espaces disque total, utilisé et libre
total_bytes, used_bytes, free_bytes = disk_usage(path.realpath('C:'))
#affichage des résultats de la commande précédente en GigaBytes
#print("il y a", str(round(total_bytes / 1000000000, 0)) + "Go au total")
#print("il y a", str(round(used_bytes / 1000000000, 0)) + "Go d'utlisé")
#print("il y a", str(round(free_bytes / 1000000000, 0)) + "Go de libre")
# récuperation de l'espace utilisé dans la variable
TOTAL_SPACE = (round(total_bytes / 1000000000, 0))
USED_SPACE = (round(used_bytes / 1000000000, 0))
#calcul de l'espace utilisé exprimé en pourcent
PERCENT_SPACE_USED = (USED_SPACE/TOTAL_SPACE) * 100
print("il y a", round(PERCENT_SPACE_USED), '%', "d'espace disque utilisé")
#définition du seuil critique d'espace disque utilisé et de l'ancienneté des dossiers à supprimer
SEUIL = 10
THREE_DAYS_AGO = time.time() -120
#boucle de comparaison du résultat de la 1ere commande avec le seuil défini
#suppression des répértoires avec extension "_SAV" supérieurs à 3 jours lorsque le seuil critique a été dépassé
for dir in glob.glob(r'C:\TEST\*_SAV'):
#date de création des dossiers
mtime = os.path.getmtime(dir)
if mtime > THREE_DAYS_AGO and SEUIL <= PERCENT_SPACE_USED:
shutil.rmtree(dir, ignore_errors=True)
print("absence de dossiers > 3 jours => suppression dossiers < 3 jours")
elif mtime < THREE_DAYS_AGO and SEUIL <= PERCENT_SPACE_USED:
shutil.rmtree(dir, ignore_errors=True)
print("dossiers > 3 jours supprimés")
else:
print("le seuil n'est pas atteint") |
merci de votre aide