Comprobar si existe un archivo en Python: os, pathlib y glob

1. Por qué verificar la existencia de archivos en Python

Introducción

Para mejorar la estabilidad del programa, verificar la existencia de archivos es fundamental. Por ejemplo, al leer o escribir datos, si el archivo de destino no existe, se produce un error y la ejecución del programa se interrumpe. En Python, es posible verificar la existencia de archivos de varias maneras, pero es importante elegir el método más adecuado según el escenario concreto. En este artículo, presentaremos métodos para verificar la existencia de archivos utilizando los módulos os, pathlib y glob, y explicaremos las ventajas de cada método.

2. Método básico: módulo os

Cómo usar os.path.exists()

os.path.exists() se utiliza para comprobar si la ruta especificada existe como archivo o directorio. Esta función devuelve True si existe y False si no existe.
import os

if os.path.exists("example.txt"):
    print("El archivo existe")
else:
    print("El archivo no existe")
Este código verifica si example.txt existe y, según el resultado, muestra un mensaje. os.path.exists() es un método general que puede comprobar tanto archivos como directorios.

Cómo elegir entre os.path.isfile() y os.path.isdir()

os.path.exists() no distingue entre archivo y directorio, pero usando os.path.isfile() y os.path.isdir() puedes determinar si el objetivo es un archivo o un directorio.
if os.path.isfile("example.txt"):
    print("Esto es un archivo")
elif os.path.isdir("example.txt"):
    print("Esto es un directorio")
else:
    print("No existe")
Así, tras verificar la existencia del objetivo y determinar si es un archivo o un directorio, es posible realizar operaciones más específicas。

3. Avanzado: módulo pathlib

Uso del método Path.exists()

pathlibでは、Path.exists()メソッドを使ってファイルやディレクトリの存在を確認できます。os.path.exists()と同様に、TrueまたはFalseを返しますが、コードがより簡潔になります。
from pathlib import Path

file_path = Path("example.txt")

if file_path.exists():
    print("El archivo existe")
else:
    print("El archivo no existe")
この方法では、ファイルパスをPathオブジェクトとして扱うため、コードがオブジェクト指向的に記述され、メンテナンスが容易になります。

Path.is_file() y Path.is_dir()

pathlibには、is_file()is_dir()のメソッドも用意されています。これにより、ファイルかディレクトリかを簡単に区別できます。
if file_path.is_file():
    print("Es un archivo")
elif file_path.is_dir():
    print("Es un directorio")
このように、pathlibを使用することで、ファイルの存在確認だけでなく、対象がファイルかディレクトリかを簡単に確認できます。

Escenarios reales

pathlibは、複数のディレクトリやファイルを操作するプロジェクトで特に便利です。複雑なパス操作をシンプルに記述でき、異なるプラットフォーム間でも同じコードで動作するため、クロスプラットフォーム開発にも最適です。

4. Comprobación de la existencia de archivos en Python: uso del módulo glob

Coincidencia de patrones con glob

glob es un módulo que permite buscar archivos basándose en patrones de nombres de archivo o rutas, por lo que es útil cuando deseas verificar de una vez los archivos que cumplen ciertas condiciones. En particular, es eficaz en escenarios en los que se manejan grandes cantidades de archivos.
import glob

files = glob.glob('*.txt')

if files:
    print("Hay archivos de texto")
else:
    print("No hay archivos de texto")
En este código, se obtienen en forma de lista todos los archivos .txt que existen en el directorio actual y se comprueba su existencia. Como permite buscar en bloque archivos basándose en formatos o patrones específicos, es útil para tareas como la gestión de archivos de copia de seguridad.

Escenarios prácticos

glob es adecuado cuando se operan grandes cantidades de archivos o carpetas, o cuando se quiere procesar de forma eficiente archivos que coinciden con un nombre o una extensión específicos. Por ejemplo, es ideal para tareas de comprobación y gestión periódica de archivos de registro y archivos temporales.

5. Operaciones de archivos seguras mediante el manejo de excepciones

También es importante recurrir al manejo de excepciones para evitar errores cuando el archivo no existe. Al utilizar la sintaxis de try-except, se evita que la ejecución del programa se detenga por un error y se puede mostrar un mensaje de error al usuario.
try:
    with open("example.txt") as f:
        print(f.read())
except FileNotFoundError:
    print("El archivo no existe")
En este código, se captura FileNotFoundError cuando el archivo no existe y se muestra un mensaje de error sin que el programa se bloquee. Con ello, mejora la experiencia del usuario y aumenta la estabilidad del programa.

6. Resumen

Para comprobar la existencia de archivos en Python, existen diversos métodos, como los módulos os, pathlib y glob. Cada método tiene ventajas según el escenario de uso, y es importante elegir el adecuado.
  • Para comprobaciones simples de existencia, os.path.exists() es ideal.
  • Cuando se requieren operaciones complejas con rutas o compatibilidad multiplataforma, pathlib es muy útil.
  • Para búsquedas basadas en patrones específicos, el módulo glob es eficaz.
Al comprender estos métodos y utilizarlos adecuadamente, se pueden realizar operaciones con archivos en Python de forma eficiente y segura. Como siguiente paso, se recomienda continuar aprendiendo sobre lectura y escritura de archivos, eliminación y operaciones de copia.</final
侍エンジニア塾