Scripts Python pour supprimer le répertoire de fichiers

Le nettoyage manuel du système de fichiers régulièrement n’est pas bon. Automatisez-les!


La suppression manuelle de fichiers et de dossiers n’est pas une tâche passionnante, comme on peut le penser. Il est logique de les automatiser.

Voici Python pour nous faciliter la vie. Python est un excellent langage de programmation pour les scripts. Nous allons profiter de Python pour terminer notre tâche sans aucun obstacle. Tout d’abord, vous devez savoir pourquoi Python est un bon choix.

  • Python est un langage favori de tous les temps pour automatiser les tâches
  • Moins de code par rapport aux autres langages de programmation
  • Python est compatible avec tous les systèmes d’exploitation. Vous pouvez exécuter le même code sous Windows, Linux et Mac.
  • Python possède un module appelé os qui nous aide à interagir avec le système d’exploitation. Nous allons utiliser ce module pour compléter notre automatisation de la suppression des fichiers.

Nous pouvons remplacer toutes les tâches système ennuyeuses ou répétitives à l’aide de Python. L’écriture de scripts pour effectuer une tâche système spécifique est un cupcake si vous connaissez Python. Voyons le cas d’utilisation suivant.

Remarque: les éléments suivants sont testés sur Python 3.6+

Suppression de fichiers / dossiers de plus de X jours

Souvent, vous n’avez pas besoin d’anciens journaux et vous devez régulièrement les nettoyer pour rendre le stockage disponible. Cela peut être n’importe quoi et pas seulement des journaux.

Nous avons une méthode appelée stat dans le module os qui donne les détails du dernier accès (st_atime), modification (st_mtime), et modification des métadonnées (st_ctime) temps. Toutes les méthodes renvoient le temps en secondes depuis l’époque. Vous pouvez trouver plus de détails sur l’époque ici.

Nous utiliserons une méthode appelée os.walk (chemin) pour parcourir les sous-dossiers d’un dossier.

Suivez les étapes ci-dessous pour écrire du code pour les fichiers / dossiers de suppression en fonction du nombre de jours.

  • Importez les modules temps, os, shutil
  • Définissez le chemin et les jours pour les variables
  • Convertissez le nombre de jours en secondes à l’aide de temps temps() méthode
  • Vérifiez si le chemin existe ou non en utilisant le os.path.exists (chemin) module
  • Si le chemin existe, obtenez la liste des fichiers et dossiers présents dans le chemin, y compris les sous-dossiers. Utilisez la méthode os.walk (chemin), et il renverra un générateur contenant des dossiers, des fichiers et des sous-dossiers
  • Obtenez le chemin d’accès du fichier ou du dossier en joignant à la fois le chemin d’accès actuel et le nom du fichier / dossier à l’aide de la méthode os.path.join ()
  • Obtenir le ctime du os.stat (chemin) méthode utilisant l’attribut st_ctime
  • Comparez les ctime avec le temps que nous avons calculé précédemment
  • Si le résultat est supérieur aux jours souhaités de l’utilisateur, vérifiez s’il s’agit d’un fichier ou d’un dossier. S’il s’agit d’un fichier, utilisez le os.remove (chemin) sinon utilisez le shutil.rmtree () méthode
  • Si le chemin n’existe pas, imprimer le message non trouvé

Voyons le code en détail.

# importation des modules requis
importer os
importation de shutil
temps d’importation

# fonction principale
def main ():

# initialisation du comptage
supprimé_folders_count = 0
supprimé_fichiers_compte = 0

# spécifiez le chemin
chemin = "/ PATH_TO_DELETE"

# spécifiez les jours
jours = 30

# conversion de jours en secondes
# time.time () renvoie l’heure actuelle en secondes
secondes = time.time () – (jours * 24 * 60 * 60)

# vérifier si le fichier est présent dans le chemin ou non
si os.path.exists (chemin):

# itération sur chaque dossier et fichier du chemin
pour root_folder, dossiers, fichiers dans os.walk (chemin):

# comparer les jours
si secondes >= get_file_or_folder_age (root_folder):

# suppression du dossier
remove_folder (root_folder)
supprimé_folders_count + = 1 # nombre d’incrémentation

# rupture après la suppression du dossier root_folder
Pause

autre:

# vérification du dossier à partir du dossier racine
pour le dossier dans les dossiers:

# chemin du dossier
folder_path = os.path.join (dossier_racine, dossier)

# comparer avec les jours
si secondes >= get_file_or_folder_age (folder_path):

# appel de la fonction remove_folder
remove_folder (folder_path)
supprimé_folders_count + = 1 # nombre d’incrémentation

# vérification des fichiers du répertoire courant
pour fichier dans fichiers:

# chemin du fichier
file_path = os.path.join (dossier_racine, fichier)

# comparer les jours
si secondes >= get_file_or_folder_age (file_path):

# appel de la fonction remove_file
remove_file (file_path)
supprimé_fichiers_comptes + = 1 # incrémentation

autre:

# si le chemin n’est pas un répertoire
# comparer avec les jours
si secondes >= get_file_or_folder_age (chemin):

# invoquer le fichier
remove_file (chemin)
supprimé_fichiers_comptes + = 1 # incrémentation

autre:

# fichier / dossier introuvable
imprimer (f ‘"{chemin}" n’est pas trouvé’)
supprimé_fichiers_comptes + = 1 # incrémentation

imprimer (f"Nombre total de dossiers supprimés: {supprimé_folders_count}")
imprimer (f"Nombre total de fichiers supprimés: {supprimé_fichiers_compte}")

def remove_folder (chemin):

# suppression du dossier
sinon shutil.rmtree (chemin):

# message de réussite
imprimer (f"{path} est supprimé avec succès")

autre:

# message d’échec
imprimer (f"Impossible de supprimer le {chemin}")

def remove_file (chemin):

# suppression du fichier
sinon os.remove (chemin):

# message de réussite
imprimer (f"{path} est supprimé avec succès")

autre:

# message d’échec
imprimer (f"Impossible de supprimer le {chemin}")

def get_file_or_folder_age (chemin):

# obtention du temps du fichier / dossier
# le temps sera en secondes
ctime = os.stat (chemin) .st_ctime

# renvoyant l’heure
retourner ctime

si __name__ == ‘__main__’:
principale()

Vous devez ajuster les deux variables suivantes dans le code ci-dessus en fonction de l’exigence.

jours = 30
chemin = "/ PATH_TO_DELETE"

Suppression de fichiers supérieurs à X Go

Cherchons les fichiers dont la taille est supérieure à une taille particulière et supprimons-les. Il est similaire au script ci-dessus. Dans le script précédent, nous avons pris âge comme paramètre, et maintenant nous allons prendre Taille comme paramètre pour la suppression.

# importation du module os
importer os

# fonction qui renvoie la taille d’un fichier
def get_file_size (chemin):

# obtention de la taille du fichier en octets
taille = os.path.getsize (chemin)

# renvoyant la taille du fichier
taille de retour

# fonction pour supprimer un fichier
def remove_file (chemin):

# suppression du fichier
sinon os.remove (chemin):

# Succès
imprimer (f"{chemin} est supprimé avec succès")

autre:

# Erreur
imprimer (f"Impossible de supprimer le {chemin}")

def main ():
# spécifiez le chemin
chemin = "ENTER_PATH_HERE"

# mettre la taille maximale du fichier en Mo
taille = 500

# vérifier si le chemin existe ou non
si os.path.exists (chemin):

# conversion de la taille en octets
taille = taille * 1024 * 1024

# traversant les sous-dossiers
pour root_folder, dossiers, fichiers dans os.walk (chemin):

# itération sur la liste des fichiers
pour fichier dans fichiers:

# obtention du chemin du fichier
file_path = os.path.join (dossier_racine, fichier)

# vérification de la taille du fichier
si get_file_size (file_path) >= taille:
# appel de la fonction remove_file
remove_file (file_path)

autre:

# vérification uniquement si le chemin est un fichier
si os.path.isfile (chemin):
# path n’est pas un dir
# vérification directe du fichier
si get_file_size (chemin) >= taille:
# appel de la fonction remove_file
remove_file (chemin)

autre:

# chemin n’existe pas
imprimer (f"{path} n’existe pas")

si __name__ == ‘__main__’:
principale()

Ajustez les deux variables suivantes.

chemin = "ENTER_PATH_HERE"
taille = 500

Suppression de fichiers avec une extension spécifique

Il peut y avoir un scénario dans lequel vous souhaitez supprimer des fichiers par leur type d’extension. Disons le fichier .log. Nous pouvons trouver l’extension d’un fichier en utilisant la méthode os.path.splitext (path). Il retourne un tuple contenant le chemin et l’extension du fichier.

# importation du module os
importer os

# fonction principale
def main ():

# spécifiez le chemin
chemin = "PATH_TO_LOOK_FOR"

# spécifiez l’extension
extension = ".Journal"

# vérifier si le chemin existe ou non
si os.path.exists (chemin):

# vérifier si le chemin est un répertoire ou non
si os.path.isdir (chemin):

# itération à travers les sous-dossiers
pour root_folder, dossiers, fichiers dans os.walk (chemin):

# vérification des fichiers
pour fichier dans fichiers:

# chemin du fichier
file_path = os.path.join (dossier_racine, fichier)

# extraire l’extension du nom de fichier
file_extension = os.path.splitext (file_path) [1]

# vérification de l’extension_fichier
si extension == extension_fichier:

# suppression du fichier
sinon os.remove (file_path):

# message de réussite
imprimer (f"{file_path} supprimé avec succès")

autre:

# message d’échec
imprimer (f"Impossible de supprimer le {file_path}")

autre:

# chemin n’est pas un répertoire
imprimer (f"{path} n’est pas un répertoire")

autre:

# chemin n’existe pas
imprimer (f"{path} n’existe pas")

si __name__ == ‘__main__’:
# appel de la fonction principale
principale()

N’oubliez pas de mettre à jour le chemin et la variable d’extension dans le code ci-dessus pour répondre à vos besoins.

Je suggérerais de tester les scripts dans l’environnement NON PRODUCTION. Une fois que vous êtes satisfait des résultats, vous pouvez planifier via cron (si vous utilisez Linux) pour l’exécuter périodiquement pour les travaux de maintenance. Python est idéal pour réaliser ce genre de choses et si vous souhaitez en apprendre davantage, consultez ce Cours Udemy.

MOTS CLÉS:

  • Python

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map