{"id":95342,"date":"2022-09-28T14:27:14","date_gmt":"2022-09-28T14:27:14","guid":{"rendered":"https:\/\/blogging-techies.com\/fr\/scripts-python-pour-supprimer-regulierement-des-fichiers\/"},"modified":"2022-09-28T14:27:14","modified_gmt":"2022-09-28T14:27:14","slug":"scripts-python-pour-supprimer-regulierement-des-fichiers","status":"publish","type":"post","link":"https:\/\/blogging-techies.com\/fr\/scripts-python-pour-supprimer-regulierement-des-fichiers\/","title":{"rendered":"Scripts Python pour supprimer r\u00e9guli\u00e8rement des fichiers"},"content":{"rendered":"<div>\n<p><img decoding=\"async\" src=\"https:\/\/blogging-techies.com\/wp-content\/uploads\/2022\/02\/Scripts-de-Python-para-eliminar-los-archivos-regularmente.jpg\"\/><\/p>\n<p>Nettoyer r\u00e9guli\u00e8rement le syst\u00e8me de fichiers manuellement n&#8217;est pas bon.  Automatisez-les !<\/p>\n<p>La suppression manuelle de fichiers et de dossiers n&#8217;est pas une t\u00e2che passionnante comme vous pourriez le penser.  Il est logique de les automatiser.<\/p>\n<p>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\u00e2che sans aucune entrave.  Tout d&#8217;abord, vous devez savoir pourquoi Python est un bon choix.<\/p>\n<p>Python est le langage pr\u00e9f\u00e9r\u00e9 de tous les temps pour automatiser les t\u00e2ches Moins de code par rapport aux autres langages de programmation Python est pris en charge sur tous les syst\u00e8mes d&#8217;exploitation.  Vous pouvez ex\u00e9cuter le m\u00eame code sur Windows, Linux et Mac. Python a un module appel\u00e9 os qui nous aide \u00e0 interagir avec le syst\u00e8me d&#8217;exploitation.  Nous allons utiliser ce module pour compl\u00e9ter notre automatisation de suppression de fichiers.<\/p>\n<p>Nous pouvons remplacer toute t\u00e2che syst\u00e8me ennuyeuse ou r\u00e9p\u00e9titive \u00e0 l&#8217;aide de Python.  \u00c9crire des scripts pour accomplir une t\u00e2che syst\u00e8me sp\u00e9cifique est un jeu d&#8217;enfant si vous connaissez Python.  Regardons le cas d&#8217;utilisation suivant.<\/p>\n<p>Remarque : ce qui suit est test\u00e9 sur Python 3.6+<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Supprimer_les_fichiersdossiers_de_plus_de_X_jours\"><\/span>Supprimer les fichiers\/dossiers de plus de X jours<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Souvent, vous n&#8217;avez pas besoin de vieilles b\u00fbches et vous devez les nettoyer r\u00e9guli\u00e8rement pour lib\u00e9rer de l&#8217;espace de stockage.  Il peut s&#8217;agir de n&#8217;importe quoi et pas seulement de journaux.<\/p>\n<p>Nous avons une m\u00e9thode appel\u00e9e stat dans le module os qui donne des d\u00e9tails sur le dernier acc\u00e8s <strong>(st_atime),<\/strong> modification <strong>(st_mtime),<\/strong> et modification des m\u00e9tadonn\u00e9es <strong>(st_ctime)<\/strong> heure.  Toutes les m\u00e9thodes renvoient le temps en secondes depuis l&#8217;\u00e9poque.  Vous pouvez trouver plus de d\u00e9tails sur l&#8217;heure ici.<\/p>\n<p>Nous allons utiliser une m\u00e9thode appel\u00e9e os.walk(path) pour parcourir les sous-dossiers d&#8217;un dossier.<\/p>\n<p>Suivez les \u00e9tapes ci-dessous pour \u00e9crire le code de suppression des fichiers\/dossiers en fonction du nombre de jours.<\/p>\n<p>Importer les modules <strong>temps d&#8217;arr\u00eat<\/strong><br \/>D\u00e9finissez le chemin et les jours en variables Convertissez le nombre de jours en secondes \u00e0 l&#8217;aide de <strong>temps temps() <\/strong>method V\u00e9rifiez si le chemin existe ou non en utilisant la m\u00e9thode <strong>os.path.exists(chemin) <\/strong>module Si le chemin existe, obtient la liste des fichiers et dossiers pr\u00e9sents dans le chemin, y compris les sous-dossiers.  utiliser la m\u00e9thode <strong>os.walk(chemin), <\/strong>et renverra un g\u00e9n\u00e9rateur contenant des dossiers, des fichiers et des sous-dossiers Obtenez le chemin du fichier ou du dossier en joignant le chemin actuel et le nom du fichier\/dossier \u00e0 l&#8217;aide de la m\u00e9thode <strong>os.path.join()<\/strong><br \/>obtenir le <strong>l&#8217;heure <\/strong>depuis le <strong>os.stat(chemin) <\/strong>m\u00e9thode utilisant l&#8217;attribut <strong>st_ctime<\/strong><br \/>Comparez les <strong>l&#8217;heure<\/strong> avec le temps que nous avons calcul\u00e9 pr\u00e9c\u00e9demment.  Si le r\u00e9sultat est sup\u00e9rieur aux jours souhait\u00e9s par l&#8217;utilisateur, il v\u00e9rifie s&#8217;il s&#8217;agit d&#8217;un fichier ou d&#8217;un dossier.  S&#8217;il s&#8217;agit d&#8217;un fichier, utilisez le <strong>os.remove(chemin) <\/strong>sinon utilisez le <strong>shutdown.rmtree() <\/strong>method Si le chemin n&#8217;existe pas, affiche le message introuvable<\/p>\n<p>Voyons le code en d\u00e9tail.<\/p>\n<pre class=\"line-numbers\"># importing the required modules\nimport os\nimport shutil\nimport time\n\n# main function\ndef main():\n\n\t# initializing the count\n\tdeleted_folders_count = 0\n\tdeleted_files_count = 0\n\n\t# specify the path\n\tpath = \"\/PATH_TO_DELETE\"\n\n\t# specify the days\n\tdays = 30\n\n\t# converting days to seconds\n\t# time.time() returns current time in seconds\n\tseconds = time.time() - (days * 24 * 60 * 60)\n\n\t# checking whether the file is present in path or not\n\tif os.path.exists(path):\n\t\t\n\t\t# iterating over each and every folder and file in the path\n\t\tfor root_folder, folders, files in os.walk(path):\n\n\t\t\t# comparing the days\n\t\t\tif seconds >= get_file_or_folder_age(root_folder):\n\n\t\t\t\t# removing the folder\n\t\t\t\tremove_folder(root_folder)\n\t\t\t\tdeleted_folders_count += 1 # incrementing count\n\n\t\t\t\t# breaking after removing the root_folder\n\t\t\t\tbreak\n\n\t\t\telse:\n\n\t\t\t\t# checking folder from the root_folder\n\t\t\t\tfor folder in folders:\n\n\t\t\t\t\t# folder path\n\t\t\t\t\tfolder_path = os.path.join(root_folder, folder)\n\n\t\t\t\t\t# comparing with the days\n\t\t\t\t\tif seconds >= get_file_or_folder_age(folder_path):\n\n\t\t\t\t\t\t# invoking the remove_folder function\n\t\t\t\t\t\tremove_folder(folder_path)\n\t\t\t\t\t\tdeleted_folders_count += 1 # incrementing count\n\n\n\t\t\t\t# checking the current directory files\n\t\t\t\tfor file in files:\n\n\t\t\t\t\t# file path\n\t\t\t\t\tfile_path = os.path.join(root_folder, file)\n\n\t\t\t\t\t# comparing the days\n\t\t\t\t\tif seconds >= get_file_or_folder_age(file_path):\n\n\t\t\t\t\t\t# invoking the remove_file function\n\t\t\t\t\t\tremove_file(file_path)\n\t\t\t\t\t\tdeleted_files_count += 1 # incrementing count\n\n\t\telse:\n\n\t\t\t# if the path is not a directory\n\t\t\t# comparing with the days\n\t\t\tif seconds >= get_file_or_folder_age(path):\n\n\t\t\t\t# invoking the file\n\t\t\t\tremove_file(path)\n\t\t\t\tdeleted_files_count += 1 # incrementing count\n\n\telse:\n\n\t\t# file\/folder is not found\n\t\tprint(f'\"{path}\" is not found')\n\t\tdeleted_files_count += 1 # incrementing count\n\n\tprint(f\"Total folders deleted: {deleted_folders_count}\")\n\tprint(f\"Total files deleted: {deleted_files_count}\")\n\n\ndef remove_folder(path):\n\n\t# removing the folder\n\tif not shutil.rmtree(path):\n\n\t\t# success message\n\t\tprint(f\"{path} is removed successfully\")\n\n\telse:\n\n\t\t# failure message\n\t\tprint(f\"Unable to delete the {path}\")\n\n\n\ndef remove_file(path):\n\n\t# removing the file\n\tif not os.remove(path):\n\n\t\t# success message\n\t\tprint(f\"{path} is removed successfully\")\n\n\telse:\n\n\t\t# failure message\n\t\tprint(f\"Unable to delete the {path}\")\n\n\ndef get_file_or_folder_age(path):\n\n\t# getting ctime of the file\/folder\n\t# time will be in seconds\n\tctime = os.stat(path).st_ctime\n\n\t# returning the time\n\treturn ctime\n\n\nif __name__ == '__main__':\n\tmain()<\/pre>\n<p>Vous devez ajuster les deux variables suivantes dans le code ci-dessus selon l&#8217;exigence.<\/p>\n<pre>days = 30 \npath = \"\/PATH_TO_DELETE\"<\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Supprimer_les_fichiers_de_plus_de_X_Go\"><\/span>Supprimer les fichiers de plus de X\u00a0Go<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Trouvons les fichiers qui sont plus grands qu&#8217;une taille particuli\u00e8re et supprimons-les.  Il est similaire au script pr\u00e9c\u00e9dent.  Dans le script ci-dessus, nous avons pris <strong>ann\u00e9es<\/strong> comme param\u00e8tre, et maintenant nous prendrons <strong>Taille<\/strong> comme param\u00e8tre de suppression.<\/p>\n<pre class=\"line-numbers\"># importing the os module\nimport os\n\n# function that returns size of a file\ndef get_file_size(path):\n\n\t# getting file size in bytes\n\tsize = os.path.getsize(path)\n\n\t# returning the size of the file\n\treturn size\n\n\n# function to delete a file\ndef remove_file(path):\n\n\t# deleting the file\n\tif not os.remove(path):\n\n\t\t# success\n\t\tprint(f\"{path} is deleted successfully\")\n\n\telse:\n\n\t\t# error\n\t\tprint(f\"Unable to delete the {path}\")\n\n\ndef main():\n\t# specify the path\n\tpath = \"ENTER_PATH_HERE\"\n\n\t# put max size of file in MBs\n\tsize = 500\n\n\t# checking whether the path exists or not\n\tif os.path.exists(path):\n\n\t\t# converting size to bytes\n\t\tsize = size * 1024 * 1024\n\n\t\t# traversing through the subfolders\n\t\tfor root_folder, folders, files in os.walk(path):\n\n\t\t\t# iterating over the files list\n\t\t\tfor file in files:\n\t\t\t\t\n\t\t\t\t# getting file path\n\t\t\t\tfile_path = os.path.join(root_folder, file)\n\n\t\t\t\t# checking the file size\n\t\t\t\tif get_file_size(file_path) >= size:\n\t\t\t\t\t# invoking the remove_file function\n\t\t\t\t\tremove_file(file_path)\n\t\t\t\n\t\telse:\n\n\t\t\t# checking only if the path is file\n\t\t\tif os.path.isfile(path):\n\t\t\t\t# path is not a dir\n\t\t\t\t# checking the file directly\n\t\t\t\tif get_file_size(path) >= size:\n\t\t\t\t\t# invoking the remove_file function\n\t\t\t\t\tremove_file(path)\n\n\n\telse:\n\n\t\t# path doesn't exist\n\t\tprint(f\"{path} doesn't exist\")\n\nif __name__ == '__main__':\n\tmain()<\/pre>\n<p>Ajustez les deux variables suivantes.<\/p>\n<pre>path = \"ENTER_PATH_HERE\" \nsize = 500<\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Supprimer_les_fichiers_avec_une_extension_specifique\"><\/span>Supprimer les fichiers avec une extension sp\u00e9cifique<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Il peut y avoir un sc\u00e9nario o\u00f9 vous souhaitez supprimer des fichiers par leurs types d&#8217;extension.  Disons un fichier .log.  Nous pouvons trouver l&#8217;extension d&#8217;un fichier en utilisant la m\u00e9thode os.path.splitext(path).  Renvoie un tuple contenant le chemin et l&#8217;extension du fichier.<\/p>\n<pre class=\"line-numbers\"># importing os module\nimport os\n\n# main function\ndef main():\n    \n    # specify the path\n    path = \"PATH_TO_LOOK_FOR\"\n    \n    # specify the extension\n    extension = \".log\"\n    \n    # checking whether the path exist or not\n    if os.path.exists(path):\n        \n        # check whether the path is directory or not\n        if os.path.isdir(path):\n        \n            # iterating through the subfolders\n            for root_folder, folders, files in os.walk(path):\n                \n                # checking of the files\n                for file in files:\n\n                    # file path\n                    file_path = os.path.join(root_folder, file)\n\n                    # extracting the extension from the filename\n                    file_extension = os.path.splitext(file_path)[1]\n\n                    # checking the file_extension\n                    if extension == file_extension:\n                        \n                        # deleting the file\n                        if not os.remove(file_path):\n                            \n                            # success message\n                            print(f\"{file_path} deleted successfully\")\n                            \n                        else:\n                            \n                            # failure message\n                            print(f\"Unable to delete the {file_path}\")\n        \n        else:\n            \n            # path is not a directory\n            print(f\"{path} is not a directory\")\n    \n    else:\n        \n        # path doen't exist\n        print(f\"{path} doesn't exist\")\n\nif __name__ == '__main__':\n    # invoking main function\n    main()<\/pre>\n<p>N&#8217;oubliez pas de mettre \u00e0 jour le chemin et la variable d&#8217;extension dans le code ci-dessus pour r\u00e9pondre \u00e0 vos besoins.<\/p>\n<p>Je sugg\u00e9rerais de tester les scripts dans l&#8217;environnement NON-PRODUCTION.  Une fois que vous \u00eates satisfait des r\u00e9sultats, vous pouvez programmer via cron (si vous utilisez Linux) pour l&#8217;ex\u00e9cuter p\u00e9riodiquement pour les travaux de maintenance.  Python est excellent pour accomplir ces choses, et si vous souhaitez en savoir plus, consultez ce cours Udemy.<\/p>\n<\/p><\/div>\n  <div id=\"ez-toc-container\" class=\"ez-toc-v2_0_89 ez-toc-wrap-center counter-flat ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/blogging-techies.com\/fr\/scripts-python-pour-supprimer-regulierement-des-fichiers\/#Supprimer_les_fichiersdossiers_de_plus_de_X_jours\" >Supprimer les fichiers\/dossiers de plus de X jours<\/a><\/li><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blogging-techies.com\/fr\/scripts-python-pour-supprimer-regulierement-des-fichiers\/#Supprimer_les_fichiers_de_plus_de_X_Go\" >Supprimer les fichiers de plus de X\u00a0Go<\/a><\/li><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blogging-techies.com\/fr\/scripts-python-pour-supprimer-regulierement-des-fichiers\/#Supprimer_les_fichiers_avec_une_extension_specifique\" >Supprimer les fichiers avec une extension sp\u00e9cifique<\/a><\/li><\/ul><\/nav><\/div>\n ","protected":false},"excerpt":{"rendered":"<p>Nettoyer r\u00e9guli\u00e8rement le syst\u00e8me de fichiers manuellement n&#8217;est pas bon. Automatisez-les ! La suppression manuelle de fichiers et de dossiers n&#8217;est pas une t\u00e2che passionnante comme vous pourriez 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 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":95343,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[21,720,42,13657,9908,4598,278],"class_list":["post-95342","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blogs","tag-des","tag-fichiers","tag-pour","tag-python","tag-regulierement","tag-scripts","tag-supprimer"],"_links":{"self":[{"href":"https:\/\/blogging-techies.com\/fr\/wp-json\/wp\/v2\/posts\/95342","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogging-techies.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogging-techies.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/fr\/wp-json\/wp\/v2\/comments?post=95342"}],"version-history":[{"count":0,"href":"https:\/\/blogging-techies.com\/fr\/wp-json\/wp\/v2\/posts\/95342\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/fr\/wp-json\/wp\/v2\/media\/95343"}],"wp:attachment":[{"href":"https:\/\/blogging-techies.com\/fr\/wp-json\/wp\/v2\/media?parent=95342"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogging-techies.com\/fr\/wp-json\/wp\/v2\/categories?post=95342"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogging-techies.com\/fr\/wp-json\/wp\/v2\/tags?post=95342"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}