Question Comment puis-je vérifier si un fichier existe?


Comment voir si un fichier existe ou non, sans utiliser le try déclaration?


4347
2017-09-17 12:55


origine


Réponses:


Si la raison pour laquelle vous vérifiez est que vous pouvez faire quelque chose comme if file_exists: open_it(), il est plus sûr d'utiliser un try autour de la tentative de l'ouvrir. La vérification puis l'ouverture risquent de supprimer ou de déplacer le fichier ou quelque chose entre lorsque vous vérifiez et quand vous essayez de l'ouvrir.

Si vous ne prévoyez pas d'ouvrir le fichier immédiatement, vous pouvez utiliser os.path.isfile

Revenir True si path est un fichier régulier existant. Ceci suit des liens symboliques, donc les deux islink () et isfile () peut être vrai pour le même chemin.

import os.path
os.path.isfile(fname) 

si vous devez être sûr que c'est un fichier.

À partir de Python 3.4, le pathlib module offre une approche orientée objet (rétroportée à pathlib2 en Python 2.7):

from pathlib import Path

my_file = Path("/path/to/file")
if my_file.is_file():
    # file exists

Pour vérifier un répertoire, faites:

if my_file.is_dir():
    # directory exists

Pour vérifier si un Path objet existe indépendamment de si c'est un fichier ou un répertoire, utilisez exists():

if my_file.exists():
    # path exists

Vous pouvez aussi utiliser resolve() dans un try bloc:

try:
    my_abs_path = my_file.resolve()
except FileNotFoundError:
    # doesn't exist
else:
    # exists

3949
2017-09-17 12:57



Tu as le os.path.exists fonction:

import os.path
os.path.exists(file_path)

Cela renvoie True pour les fichiers et les répertoires, mais vous pouvez utiliser à la place

os.path.isfile(file_name)

pour tester si c'est un fichier spécifiquement. Il suit les liens symboliques.


1624
2017-09-17 12:57



contrairement à isfile(), exists() reviendra True pour les répertoires.
Donc, selon que vous voulez seulement des fichiers simples ou des répertoires, vous utiliserez isfile() ou exists(). Voici une sortie REPL simple.

>>> print os.path.isfile("/etc/password.txt")
True
>>> print os.path.isfile("/etc")
False
>>> print os.path.isfile("/does/not/exist")
False
>>> print os.path.exists("/etc/password.txt")
True
>>> print os.path.exists("/etc")
True
>>> print os.path.exists("/does/not/exist")
False

835
2017-09-17 15:01



import os.path

if os.path.isfile(filepath):

467
2017-09-17 12:55



Utilisation os.path.isfile() avec os.access():

import os
import os.path

PATH='./file.txt'

if os.path.isfile(PATH) and os.access(PATH, os.R_OK):
    print "File exists and is readable"
else:
    print "Either the file is missing or not readable"

220
2018-01-16 05:57



import os
os.path.exists(path) # Returns whether the path (directory or file) exists or not
os.path.isfile(path) # Returns whether the file exists or not

209
2017-09-17 12:56



C'est le moyen le plus simple de vérifier si un fichier existe. Juste car le fichier existait lorsque vous avez vérifié ne garantie que ce sera là quand vous aurez besoin de l'ouvrir.

import os
fname = "foo.txt"
if os.path.isfile(fname):
    print("file does exist at this time")
else:
    print("no such file exists at this time")

138
2018-06-27 13:38