Cómo comprobar si un archivo existe en Python con isFile() y exists()

Estimated read time 7 min read

Al trabajar con archivos en Python, puede haber ocasiones en las que necesites comprobar si un archivo existe o no.

¿Pero por qué deberías comprobar si un fichero existe en primer lugar?

Confirmar la existencia de un archivo específico es útil cuando quieres realizar operaciones particulares, como abrir, leer o escribir en ese archivo.

Si intentas realizar cualquiera de las operaciones mencionadas anteriormente y el archivo no existe, te encontrarás con errores y tu programa acabará fallando.

Por lo tanto, para realizar operaciones y evitar que tu programa se bloquee, es un primer paso útil comprobar si existe un archivo en una ruta determinada.

Afortunadamente, Python tiene múltiples formas de comprobar si un archivo existe, como los módulos os.path y pathlib.

Específicamente, cuando usas el módulo os.path, tienes acceso a:

  • el método os.path.isfile(path) que devuelve True si la ruta es un archivo o un enlace simbólico a un archivo.
  • el método os.path.exists(path) que devuelve True si la ruta es un archivo, directorio o un enlace simbólico a un archivo.

Y cuando usas el módulo pathlib, tienes acceso a la función pathlib.Path(path).is_file(), que devuelve True si path es un archivo y existe.

En este artículo, aprenderás a utilizar Python para comprobar si un archivo existe utilizando los módulos os.path y pathlib.

¡Vamos allá!

Cómo comprobar si un archivo existe usando el módulo os.path

El módulo os es parte de la biblioteca estándar (también conocida como stdlib) de Python y proporciona una forma de acceder e interactuar con el sistema operativo.

Con el módulo os, puedes usar funcionalidades que dependen del sistema operativo subyacente, como crear y borrar archivos y carpetas, así como copiar y mover contenidos de carpetas, por nombrar algunas.

Dado que forma parte de la biblioteca estándar, el módulo os viene preempaquetado cuando instalas Python en tu sistema local. Sólo necesitas importarlo al principio de tu archivo Python usando la sentencia import:

import os

os.path es un submódulo del módulo os.

Proporciona dos métodos para manipular ficheros – específicamente los métodos isfile() y exists() que devuelven True o False, dependiendo de si un fichero existe o no.

Dado que va a utilizar el submódulo os.path, tendrá que importarlo al principio de su archivo, de la siguiente manera:

import os.path

Cómo comprobar si un archivo existe usando el método os.path.isfile() en Python

La sintaxis general del método isfile() es la siguiente:

os.path.isfile(path)

El método sólo acepta un argumento, path, que representa la ruta definida al archivo cuya existencia se desea confirmar.

El argumento path es una cadena entre comillas.

El valor de retorno del método isfile() es un valor booleano – Verdadero o Falso dependiendo de si ese fichero existe.

Tenga en cuenta que si la ruta termina en un nombre de directorio y no en un fichero, devolverá False.

Veamos un ejemplo del método en acción.

Quiero comprobar si existe un fichero example.txt en mi directorio de trabajo actual, python_project.

El archivo example.txt está en el mismo nivel que mi archivo Python main.py, así que estoy usando una ruta de archivo relativa.

Almaceno la ruta a ejemplo.txt en una variable llamada ruta.

Luego utilizo el método isfile() y le paso path como argumento para comprobar si ejemplo.txt existe en esa ruta.

Como el archivo existe, el valor de retorno es True:

import os.path

path = './example.txt'

check_file = os.path.isfile(path)

print(check_file)

# output

# True

Vale, pero ¿qué pasa con las rutas absolutas?

Aquí está el código equivalente cuando se utiliza una ruta absoluta. El archivo example.txt está dentro de un directorio python_project, que está dentro de mi directorio personal, /Users/dionysialemonaki/:

import os.path

path = '/Users/dionysialemonaki/python_project/example.txt'

print(os.path.isfile(file_path))

# Output

# True

Y como se mencionó anteriormente, el método isfile() sólo funciona para archivos y no para directorios:

import os.path

path = '/Users/dionysialemonaki/python_project'

check_file = os.path.isfile(path)

print(check_file)

# output

# False

Si la ruta termina en un directorio, el valor de retorno es False.

Cómo comprobar si un archivo existe usando el método os.path.exists() en Python

La sintaxis general del método exists() es la siguiente:

os.path.exists(path)

As you can see from the syntax above, the exists() method looks similar to the isfile() method.

The os.path.exists() method checks to see whether the specified path exists.

The main difference between exists() and isfile() is that exists() will return True if the given path to a folder or a file exists, whereas isfile() returns True only if the given path is a path to a file and not a folder.

Keep in mind that if you don’t have access and permissions to the directory, exists() will return False even if the path exists.

Let’s go back to the example from the previous section and check whether the example.txt file exists in the current working directory using the exists() method:

import os.path

path = './example.txt'

check_file = os.path.exists(path)

print(check_file)

# output

# True

Dado que la ruta a ejemplo.txt existe, la salida es True.

Como se mencionó anteriormente, el método exists() comprueba si la ruta a un directorio es válida.

En la sección anterior, cuando usé el método isfile() y la ruta apuntaba a un directorio, la salida era False aunque ese directorio existiera.

Cuando se utiliza el método exists(), si la ruta a un directorio existe, la salida será True:

import os.path

path = '/Users/dionysialemonaki/python_project'

check_file = os.path.exists(path)

print(check_file)

# output

# True

El método exists() resulta útil cuando se desea comprobar si un archivo o directorio existe.
Cómo comprobar si un archivo existe utilizando el módulo pathlib

La versión 3.4 de Python introdujo el módulo pathlib.

Usar el módulo pathlib para comprobar si un fichero existe o no es un enfoque orientado a objetos para trabajar con rutas del sistema de ficheros.

Al igual que el módulo os.path de antes, necesitas importar el módulo pathlib.

Específicamente, necesita importar la clase Path del módulo pathlib de la siguiente manera:

from pathlib import Path

A continuación, cree una nueva instancia de la clase Path e inicialícela con la ruta del archivo que desea comprobar:

from pathlib import Path

# create a Path object with the path to the file
path = Path('./example.txt')

Puede utilizar la función type() para comprobar el tipo de datos:

from pathlib import Path

path = Path('./example.txt')

print(type(path))

# output is a pathlib object
# <class 'pathlib.PosixPath'>

Esto confirma que ha creado un objeto Path.

Veamos cómo utilizar el módulo pathlib para comprobar si existe un archivo utilizando el método is_file(), uno de los métodos incorporados disponibles con el módulo pathlib.

Cómo Comprobar si un Archivo Existe Utilizando el Método Path.is_file() en Python

El método is_file() comprueba si existe un archivo.

Devuelve True si el objeto Path apunta a un archivo y False si el archivo no existe.

Veamos un ejemplo de cómo funciona:

from pathlib import Path

# create a Path object with the path to the file
path = Path('./example.txt')

print(path.is_file())

# output

# True

Dado que el archivo example.txt existe en la ruta especificada, el método is_file() devuelve True.

Conclusión

En este artículo, has aprendido cómo comprobar si un archivo existe en Python utilizando los módulos os.path y pathlib y sus métodos asociados.

Esperamos que hayas entendido las diferencias entre los módulos y cuándo usar cada uno.

Gracias por leer, y ¡feliz programación!

También le puede gustar

Más del autor

+ There are no comments

Add yours