{"id":889656,"date":"2026-10-01T16:27:59","date_gmt":"2026-10-01T16:27:59","guid":{"rendered":"https:\/\/www.ninjaone.com\/blog\/comment-verifier-si-un-fichier-existe-en-python\/"},"modified":"2026-10-01T16:28:00","modified_gmt":"2026-10-01T16:28:00","slug":"comment-verifier-si-un-fichier-existe-en-python","status":"publish","type":"post","link":"https:\/\/www.ninjaone.com\/fr\/blog\/comment-verifier-si-un-fichier-existe-en-python\/","title":{"rendered":"Comment v\u00e9rifier si un fichier existe en Python"},"content":{"rendered":"<div class=\"in-context-cta\"><h2 style=\"margin-top: 0px;\">Points cl\u00e9s<\/h2>\n<ul>\n<li>V\u00e9rifier l&rsquo;existence d&rsquo;un fichier en Python est indispensable pour cr\u00e9er des workflows d&rsquo;automatisation et de scripting fiables.<\/li>\n<li>Python propose plusieurs m\u00e9thodes issues de la biblioth\u00e8que standard pour v\u00e9rifier l&rsquo;existence d&rsquo;un fichier, notamment os.path.exists(), os.path.isfile() et pathlib.Path.exists().<\/li>\n<li>os.path.exists() confirme qu&rsquo;un chemin existe, tandis que os.path.isfile() garantit que ce chemin correspond bien \u00e0 un fichier ordinaire.<\/li>\n<li>Le module pathlib offre une fa\u00e7on plus claire et multiplateforme de valider fichiers et r\u00e9pertoires en Python.<\/li>\n<li>Les v\u00e9rifications d&rsquo;existence de fichiers doivent servir au d\u00e9roulement normal du programme, et non \u00e0 la gestion des exceptions.<\/li>\n<li>Les diff\u00e9rences entre syst\u00e8mes d&rsquo;exploitation, les permissions et les syst\u00e8mes de fichiers r\u00e9seau peuvent influencer le r\u00e9sultat de ces v\u00e9rifications.<\/li>\n<\/ul>\n<\/div>\n<p>V\u00e9rifier si un fichier existe fait partie des op\u00e9rations courantes dans un script Python. Les t\u00e2ches d&rsquo;automatisation d\u00e9pendent souvent de fichiers de configuration, de journaux, d&rsquo;installateurs ou de fichiers de sortie qui peuvent \u00eatre pr\u00e9sents ou non au moment de l&rsquo;ex\u00e9cution. Python met \u00e0 la disposition des MSP des m\u00e9thodes directes pour tester la pr\u00e9sence d&rsquo;un fichier de mani\u00e8re propre et pr\u00e9visible. Bien conna\u00eetre ces m\u00e9thodes permet de limiter les erreurs et de rendre les scripts plus fiables.<\/p>\n<p>Vous pouvez utiliser <strong>Python pour v\u00e9rifier si un fichier existe<\/strong> et, gr\u00e2ce \u00e0 cela, valider les pr\u00e9requis avant de lancer une t\u00e2che, \u00e9viter d&rsquo;\u00e9craser des fichiers importants, confirmer qu&rsquo;une sortie a bien \u00e9t\u00e9 g\u00e9n\u00e9r\u00e9e et contr\u00f4ler le d\u00e9roulement de vos scripts dans vos pipelines d&rsquo;automatisation.<\/p>\n<h2>Guide de validation de fichiers en Python<\/h2>\n<p>\ud83d\udccc<strong>Pr\u00e9requis<\/strong>\u00a0:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.python.org\/downloads\/\" target=\"_blank\" rel=\"noopener\">Python<\/a> doit \u00eatre install\u00e9 sur votre syst\u00e8me.<\/li>\n<li>Vous devez d\u00e9j\u00e0 poss\u00e9der au moins des notions de base de la syntaxe Python.<\/li>\n<li>Vous devez avoir acc\u00e8s au syst\u00e8me de fichiers que vous souhaitez v\u00e9rifier.<\/li>\n<li>Vous devez comprendre la diff\u00e9rence entre chemins relatifs et chemins absolus.<\/li>\n<\/ul>\n<h3>M\u00e9thode 1\u00a0: utiliser os.path.exists()<\/h3>\n<p>Il s&rsquo;agit de la m\u00e9thode la plus simple pour v\u00e9rifier la pr\u00e9sence d&rsquo;un \u00e9l\u00e9ment dans votre r\u00e9pertoire. Elle vous indique s&rsquo;il s&rsquo;y trouve un fichier, un r\u00e9pertoire ou un lien symbolique.<\/p>\n<p style=\"padding-left: 40px\"><strong><code>import os<\/code><\/strong><\/p>\n<p style=\"padding-left: 40px\"><strong><code>if os.path.exists(\"example.txt\"):<\/code><br \/>\n<\/strong><strong><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 print(\"Path exists\")<\/code><br \/>\n<\/strong><strong><code>else:<\/code><br \/>\n<\/strong><strong><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 print(\"File does not exist\")<\/code><\/strong><\/p>\n<p>\u00ab\u00a0Example.txt\u00a0\u00bb doit \u00eatre remplac\u00e9 par le nom du fichier que vous recherchez.<\/p>\n<p>\ud83d\udca1<strong>Remarque<\/strong>\u00a0: <strong>import os <\/strong>importe le module OS int\u00e9gr\u00e9 \u00e0 Python, qui vous permet d&rsquo;interagir avec le syst\u00e8me d&rsquo;exploitation depuis Python. Si vous l&rsquo;avez d\u00e9j\u00e0 import\u00e9, vous pouvez supprimer cette ligne du code.<\/p>\n<h3>M\u00e9thode 2\u00a0: utiliser os.path.isfile() pour ne v\u00e9rifier que les fichiers<\/h3>\n<p>Si vous souhaitez uniquement savoir si un <em>fichier <\/em>existe, utilisez plut\u00f4t ce code\u00a0:<\/p>\n<p style=\"padding-left: 40px\"><strong><code>import os<\/code><\/strong><\/p>\n<p style=\"padding-left: 40px\"><strong><code>if os.path.isfile(\"example.txt\"):\u00a0<\/code><br \/>\n<\/strong><strong><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 print(\"Path exists\")<\/code><br \/>\n<\/strong><strong><code>else:<\/code><\/strong><\/p>\n<p style=\"padding-left: 40px\"><strong><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0print(\"File does not exist\")<\/code><\/strong><\/p>\n<p>\u00ab\u00a0Example.txt\u00a0\u00bb doit \u00eatre remplac\u00e9 par le nom du fichier que vous recherchez.<\/p>\n<p>\ud83d\udca1<strong>Remarque<\/strong>\u00a0: <strong>import os <\/strong>importe le <a href=\"https:\/\/docs.python.org\/3\/library\/os.html\" target=\"_blank\" rel=\"noopener\">module OS<\/a> int\u00e9gr\u00e9 \u00e0 Python, qui vous permet d&rsquo;interagir avec le syst\u00e8me d&rsquo;exploitation depuis Python. Si vous l&rsquo;avez d\u00e9j\u00e0 import\u00e9, vous pouvez supprimer cette ligne du code.<\/p>\n<h3>M\u00e9thode 3\u00a0: utiliser pathlib.Path.exists()<\/h3>\n<p><strong>pathlib<\/strong> est un module Python int\u00e9gr\u00e9 qui propose une approche orient\u00e9e objet pour manipuler les chemins du syst\u00e8me de fichiers. Comme il traite les chemins comme des objets dot\u00e9s de m\u00e9thodes utiles, il est plus clair et plus efficace que les m\u00e9thodes pr\u00e9c\u00e9dentes.<\/p>\n<p style=\"padding-left: 40px\"><strong><code>from pathlib import Path<\/code><\/strong><\/p>\n<p style=\"padding-left: 40px\"><strong><code>file_path = Path(\"example.txt\")<\/code><br \/>\n<\/strong><strong><code>if file_path.exists():<\/code><br \/>\n<\/strong><strong><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0print(\"Path exists\")<\/code><br \/>\n<\/strong><strong><code>else:<\/code><\/strong><\/p>\n<p style=\"padding-left: 40px\"><strong><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 print(\"Path does not exist\")<\/code><\/strong><\/p>\n<p>\u00ab\u00a0Example.txt\u00a0\u00bb doit \u00eatre remplac\u00e9 par le nom du fichier que vous recherchez.<\/p>\n<p>\ud83d\udca1<strong>Remarque<\/strong>\u00a0: cela vous indique uniquement si un chemin existe. Aucune distinction n&rsquo;est faite entre un fichier, un r\u00e9pertoire ou un lien.<\/p>\n<p>\ud83d\udca1<strong>Remarque<\/strong>\u00a0:<strong> import Path <\/strong>importe le <a href=\"https:\/\/docs.python.org\/3\/library\/os.html\" target=\"_blank\" rel=\"noopener\">module OS<\/a> int\u00e9gr\u00e9 \u00e0 Python, qui vous permet d&rsquo;interagir avec le syst\u00e8me d&rsquo;exploitation depuis Python. Si vous l&rsquo;avez d\u00e9j\u00e0 import\u00e9, vous pouvez supprimer cette ligne du code.<\/p>\n<h4>Distinguer fichiers et r\u00e9pertoires avec pathlib<\/h4>\n<p><strong>file_path.exists() <\/strong>vous indique seulement qu&rsquo;un chemin de fichier existe. Cette m\u00e9thode ne fait pas la distinction entre fichiers, chemins et r\u00e9pertoires. Pour \u00e9tablir cette distinction, utilisez les commandes suivantes\u00a0:<\/p>\n<ul>\n<li><strong>.is_file() &#8211; <\/strong>v\u00e9rifie uniquement la pr\u00e9sence de fichiers sur votre syst\u00e8me.<\/li>\n<li><strong>.is_dir() &#8211; <\/strong>v\u00e9rifie uniquement la pr\u00e9sence de r\u00e9pertoires sur votre syst\u00e8me.<\/li>\n<\/ul>\n<h4>\u00c9viter les v\u00e9rifications d&rsquo;existence bas\u00e9es sur les exceptions<\/h4>\n<p>Vous pouvez \u00e9galement v\u00e9rifier l&rsquo;existence d&rsquo;un fichier en Python via les exceptions, comme ceci\u00a0:<\/p>\n<p style=\"padding-left: 40px\"><strong><code>try:<\/code><br \/>\n<\/strong><strong><code>\u00a0 \u00a0 \u00a0with open(\"example.txt\") as f:<\/code><br \/>\n<\/strong><strong><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 data = f.read()<\/code><br \/>\n<\/strong><strong><code>except FileNotFoundError:<\/code><br \/>\n<\/strong><strong><code>\u00a0 \u00a0 \u00a0 \u00a0print(\"File does not exist\")<\/code><\/strong><\/p>\n<p>Cette approche est toutefois plus complexe et moins lisible. Les v\u00e9rifications bas\u00e9es sur les exceptions doivent \u00eatre r\u00e9serv\u00e9es aux d\u00e9faillances inattendues. Sinon, mieux vaut commencer par des v\u00e9rifications d&rsquo;existence, si vous souhaitez am\u00e9liorer la lisibilit\u00e9 et la pr\u00e9visibilit\u00e9 de votre code.<\/p>\n<h2>Autres points \u00e0 prendre en compte pour v\u00e9rifier l&rsquo;existence d&rsquo;un fichier avec Python<\/h2>\n<ul>\n<li>Les chemins relatifs d\u00e9pendent du r\u00e9pertoire de travail du script.<\/li>\n<li>Les liens symboliques peuvent se comporter diff\u00e9remment selon la mani\u00e8re dont vous les analysez.<\/li>\n<li>Les permissions peuvent bloquer l&rsquo;acc\u00e8s \u00e0 un fichier m\u00eame s&rsquo;il existe. Assurez-vous d&rsquo;avoir acc\u00e8s \u00e0 l&rsquo;ensemble du r\u00e9pertoire avant d&rsquo;effectuer ces v\u00e9rifications.<\/li>\n<li>Les syst\u00e8mes de fichiers r\u00e9seau peuvent pr\u00e9senter de la latence ou des comportements de mise en cache. Cela peut fausser les r\u00e9sultats obtenus.<\/li>\n<li>La sensibilit\u00e9 \u00e0 la casse varie d&rsquo;un syst\u00e8me d&rsquo;exploitation \u00e0 l&rsquo;autre. Tenez-en compte lorsque vous ex\u00e9cutez vos commandes Python.<\/li>\n<\/ul>\n<h2>R\u00e9solution des probl\u00e8mes de validation de fichiers en Python<\/h2>\n<table>\n<tbody>\n<tr>\n<td style=\"text-align: center\"><strong>Probl\u00e8me<\/strong><\/td>\n<td style=\"text-align: center\"><strong>Solution<\/strong><\/td>\n<\/tr>\n<tr>\n<td>Le fichier existe, mais Python indique le contraire.<\/td>\n<td>V\u00e9rifiez que vous avez bien saisi le chemin et le r\u00e9pertoire du fichier.<\/td>\n<\/tr>\n<tr>\n<td>Le script se comporte diff\u00e9remment sur un autre syst\u00e8me d&rsquo;exploitation.<\/td>\n<td>V\u00e9rifiez les s\u00e9parateurs de chemin et la sensibilit\u00e9 \u00e0 la casse.<\/td>\n<\/tr>\n<tr>\n<td>Vous rencontrez des erreurs de permission lors d&rsquo;une v\u00e9rification d&rsquo;existence.<\/td>\n<td>Assurez-vous de disposer des droits d&rsquo;acc\u00e8s appropri\u00e9s.<\/td>\n<\/tr>\n<tr>\n<td>Vous \u00eates confront\u00e9 \u00e0 des situations de concurrence (race conditions).<\/td>\n<td>Le fichier recherch\u00e9 a peut-\u00eatre \u00e9t\u00e9 supprim\u00e9 ou cr\u00e9\u00e9 pendant la v\u00e9rification d&rsquo;existence.<\/td>\n<\/tr>\n<tr>\n<td>Vos automatisations \u00e9chouent.<\/td>\n<td>Documentez les chemins et les v\u00e9rifications pour gagner en visibilit\u00e9.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Tirez le meilleur parti de vos scripts Python avec les outils NinjaOne<\/h2>\n<p>La suite d&rsquo;<a href=\"https:\/\/www.ninjaone.com\/fr\/rmm\/script-automatise\/\">outils<\/a> NinjaOne facilite l&rsquo;<a href=\"https:\/\/www.ninjaone.com\/fr\/blog\/automatisation-informatique-definition-script-et-vue-d-ensemble\/\">automatisation<\/a> bas\u00e9e sur Python en permettant aux MSP d&rsquo;ex\u00e9cuter des scripts qui valident la pr\u00e9sence d&rsquo;un fichier avant l&rsquo;ex\u00e9cution. Les v\u00e9rifications d&rsquo;existence permettent de confirmer la disponibilit\u00e9 d&rsquo;un installateur, de contr\u00f4ler des fichiers de configuration ou de s&rsquo;assurer que les sorties de script ont bien \u00e9t\u00e9 g\u00e9n\u00e9r\u00e9es. Associ\u00e9es \u00e0 un scripting et \u00e0 un reporting centralis\u00e9s, elles renforcent la fiabilit\u00e9 sur l&rsquo;ensemble des terminaux g\u00e9r\u00e9s.<\/p>\n<h2>Exploitez pleinement vos scripts Python gr\u00e2ce aux v\u00e9rifications d&rsquo;existence de fichiers<\/h2>\n<p>V\u00e9rifier si un fichier existe est une \u00e9tape simple, mais d\u00e9terminante, pour \u00e9crire des scripts Python fiables. En utilisant les m\u00e9thodes de la biblioth\u00e8que standard comme os.path et pathlib, les d\u00e9veloppeurs et les \u00e9quipes informatiques \u00e9vitent des erreurs inutiles et construisent des workflows d&rsquo;automatisation pr\u00e9visibles. Choisir la bonne m\u00e9thode selon le type de fichier et le contexte garantit un comportement correct des scripts dans tous les environnements.<\/p>\n<p><strong>Articles connexes\u00a0:<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/www.ninjaone.com\/fr\/script-hub\/verifier-l-existence-de-fichiers-linux\/\">Guide complet\u00a0: utiliser un script Linux pour v\u00e9rifier l&rsquo;existence d&rsquo;un fichier ou d&rsquo;un dossier<\/a> <a href=\"https:\/\/www.ninjaone.com\/fr\/script-hub\/restreindre-l-acces-a-python-dans-excel-powershell\/\">Comment restreindre l&rsquo;acc\u00e8s \u00e0 Python dans Microsoft Excel avec PowerShell<\/a><\/li>\n<li><a href=\"https:\/\/www.ninjaone.com\/fr\/script-hub\/verifier-l-existence-d-un-fichier-powershell\/\">Comment utiliser un script PowerShell pour v\u00e9rifier l&rsquo;existence d&rsquo;un fichier ou d&rsquo;un dossier sous Windows<\/a><\/li>\n<li><a href=\"https:\/\/www.ninjaone.com\/fr\/script-hub\/verification-de-l-existence-de-fichiers-macos\/\">Comment automatiser les v\u00e9rifications d&rsquo;existence de fichiers et de dossiers sous macOS<\/a><\/li>\n<li><a href=\"https:\/\/www.ninjaone.com\/fr\/script-hub\/verification-du-hachage-des-fichiers-powershell\/\">Comment utiliser PowerShell pour v\u00e9rifier l&#8217;empreinte des fichiers en s\u00e9curit\u00e9 informatique<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>V\u00e9rifier si un fichier existe fait partie des op\u00e9rations courantes dans un script Python. Les t\u00e2ches d&rsquo;automatisation d\u00e9pendent souvent de fichiers de configuration, de journaux, d&rsquo;installateurs ou de fichiers de sortie qui peuvent \u00eatre pr\u00e9sents ou non au moment de l&rsquo;ex\u00e9cution. Python met \u00e0 la disposition des MSP des m\u00e9thodes directes pour tester la pr\u00e9sence [&hellip;]<\/p>\n","protected":false},"author":35,"featured_media":752086,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_relevanssi_hide_post":"","_relevanssi_hide_content":"","_relevanssi_pin_for_all":"","_relevanssi_pin_keywords":"","_relevanssi_unpin_keywords":"","_relevanssi_related_keywords":"","_relevanssi_related_include_ids":"","_relevanssi_related_exclude_ids":"","_relevanssi_related_no_append":"","_relevanssi_related_not_related":"","_relevanssi_related_posts":"","_relevanssi_noindex_reason":"","_lmt_disableupdate":"","_lmt_disable":"","footnotes":""},"categories":[4355],"tags":[],"class_list":["post-889656","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-it-ops"],"acf":[],"modified_by":null,"_links":{"self":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/posts\/889656","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/comments?post=889656"}],"version-history":[{"count":1,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/posts\/889656\/revisions"}],"predecessor-version":[{"id":889657,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/posts\/889656\/revisions\/889657"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/media\/752086"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/media?parent=889656"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/categories?post=889656"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/tags?post=889656"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}