¿Cómo compruebo si un archivo existe sin excepciones?
¿Cómo verifico si un archivo existe o no sin utilizar la try
declaración?
Si el motivo por el que estás comprobando es para poder hacer algo como if file_exists: open_it()
, es más seguro utilizar un try
elemento para intentar abrirlo. Verificar y luego abrir corre el riesgo de que el archivo se elimine o se mueva o algo entre el momento en que lo verifica y el momento en que intenta abrirlo.
Si no planea abrir el archivo inmediatamente, puede usaros.path.isfile
Devuelve
True
si la ruta es un archivo normal existente. Esto sigue a enlaces simbólicos, por lo que tanto islink() como isfile() pueden ser verdaderos para la misma ruta.
import os.path
os.path.isfile(fname)
si necesita estar seguro de que es un archivo.
A partir de Python 3.4, el pathlib
módulo ofrece un enfoque orientado a objetos (compatible con pathlib2
Python 2.7):
from pathlib import Path
my_file = Path("/path/to/file")
if my_file.is_file():
# file exists
Para consultar un directorio, haga:
if my_file.is_dir():
# directory exists
Para verificar si un Path
objeto existe independientemente de si es un archivo o directorio, use exists()
:
if my_file.exists():
# path exists
También puedes usar resolve(strict=True)
en un try
bloque:
try:
my_abs_path = my_file.resolve(strict=True)
except FileNotFoundError:
# doesn't exist
else:
# exists
Úselo os.path.exists
para verificar archivos y directorios:
import os.path
os.path.exists(file_path)
Úselo os.path.isfile
para verificar solo archivos (nota: sigue enlaces simbólicos ):
os.path.isfile(file_path)
A diferencia de isfile()
, exists()
volverá True
a los directorios. Entonces, dependiendo de si deseas solo archivos simples o también directorios, usarás isfile()
o exists()
. Aquí hay una salida REPL simple :
>>> os.path.isfile("/etc/password.txt")
True
>>> os.path.isfile("/etc")
False
>>> os.path.isfile("/does/not/exist")
False
>>> os.path.exists("/etc/password.txt")
True
>>> os.path.exists("/etc")
True
>>> os.path.exists("/does/not/exist")
False