Introducción
Al escribir scripts de Python, es posible que desee realizar una determinada acción solo si existe un archivo o directorio. Por ejemplo, es posible que desee leer o escribir datos en un archivo de configuración o crear el archivo solo si aún no existe.
En Python, hay muchas formas diferentes de verificar la existencia de un archivo y determinar el tipo de archivo.
En este tutorial, le mostraremos tres técnicas diferentes sobre cómo verificar la existencia de un archivo.
Compruebe si el archivo existe
La forma más sencilla de comprobar si existe un archivo es intentar abrirlo. Este enfoque no requiere importar ningún módulo y funciona con Python 2 y 3. Utilice este método si desea abrir el archivo y realizar algunas acciones.
El siguiente fragmento utiliza un bloque simple try-except. Estamos intentando abrir el archivo filename.txt
y si el archivo no existe, IOError
y se imprime el mensaje "Archivo no accesible":
try:
f = open("filename.txt")
# Do something with the file
except IOError:
print("File not accessible")
finally:
f.close()
Si está usando Python 3, también puede usar FileNotFoundError
IOError
de la excepción.
Al abrir archivos, se recomienda que utilice la with
, que garantiza que el archivo se cierre correctamente después de que se completen las operaciones de archivo, incluso si se genera una excepción durante la operación. También reduce el código porque no es necesario cerrar el archivo usando la función de close
El siguiente código es equivalente al ejemplo anterior:
try:
with open('/etc/hosts') as f:
print(f.readlines())
# Do something with the file
except IOError:
print("File not accessible")
En los ejemplos anteriores, estábamos usando el bloque try-except y abriendo el archivo para evitar condiciones de carrera. Las condiciones de carrera ocurren cuando tiene más de un proceso accediendo al mismo archivo.
Por ejemplo, al verificar la existencia de un archivo, otro proceso puede crear, eliminar o bloquear el archivo en el intervalo de tiempo entre la verificación y la apertura del archivo. Esto podría hacer que el código se rompa.
Verifique si el archivo existe usando el módulo os.path
El os.path
proporciona algunas funciones útiles para trabajar con nombres de ruta. El módulo está disponible para Python 2 y 3.
En el contexto de este tutorial, las funciones más importantes son:
os.path.exists(path)
: devuelve verdadero si lapath
es un archivo, directorio o enlace simbólico válido.os.path.isfile(path)
: devuelve verdadero si lapath
es un archivo normal o un enlace simbólico a un archivo.os.path.isdir(path)
: devuelve verdadero si lapath
es un directorio o un enlace simbólico a un directorio.
El siguiente código verificará si el archivo existe filename.txt
:
import os.path
if os.path.isfile('filename.txt'):
print ("File exist")
else:
print ("File not exist")
Utilice este método si solo desea verificar si el archivo existe o no. Si desea realizar una acción en el archivo, prefiera utilizar el método anterior.
Verifique si el archivo existe usando el módulo pathlib
El pathlib
está disponible en Python 3.4 y versiones posteriores. Este módulo proporciona una interfaz orientada a objetos para trabajar con rutas de sistema de archivos para diferentes sistemas operativos.
Como en el ejemplo anterior, el siguiente código verifica si existe el archivo filename.txt
from pathlib import Path
if Path('filename.txt').is_file():
print ("File exist")
else:
print ("File not exist")
is_file
devuelve verdadero si la path
es un archivo normal o un enlace simbólico a un archivo. Para verificar la existencia de un directorio, use el método is_dir
La principal diferencia entre pathlib
y os.path
es que pathlib
permite trabajar con rutas como Path
con métodos y atributos relevantes en lugar de objetos str
Si desea utilizar este módulo en Python 2, puede instalarlo con pip:
pip install pathlib2
Conclusión
En esta guía, le mostramos cómo verificar si existe un archivo o directorio usando Python.