Cómo comprobar si un archivo existe en Python

  1. try/except para comprobar la existencia del archivo (>Python 2.x)
  2. os.path.isfile() para comprobar si el archivo existe (>=Python 2.x)
  3. pathlib.Path.is_file() para comprobar si el archivo existe (>=Python 3.4)

Este tutorial presentará tres soluciones diferentes para comprobar si un archivo existe en Python.

  1. Bloque try/except para comprobar la existencia del archivo (>=Python 2.x)
  2. La función os.path.isfile para comprobar la existencia del archivo (>=Python 2.x)
  3. pathlib.Path.is_file() comprobar la existencia del fichero (>=Python 3.4)

try/except para comprobar la existencia del archivo (>Python 2.x)

Podríamos intentar abrir el archivo y comprobar si existe o no dependiendo de si se lanzará o no el IOError (en Python 2.x) o FileNotFoundError (en Python 3.x).

def checkFileExistance(filePath):
    try:
        with open(filePath, 'r') as f:
            return True
    except FileNotFoundError as e:
        return False
    except IOError as e:
        return False

En los códigos de ejemplo anteriores, lo hacemos compatible con Python 23 listando tanto FileNotFoundError como IOError en la parte de captura de excepciones.

os.path.isfile() para comprobar si el archivo existe (>=Python 2.x)

import os
fileName = r"C:\Test\test.txt"
os.path.isfile(fileName)

Comprueba si el archivo fileName existe.

Advertencia

Algunos desarrolladores prefieren usar os.path.exists() para comprobar si un fichero existe. Pero no podría distinguir si el objeto es un fichero o un directorio.

import os
fileName = r"C:\Test\test.txt"
os.path.exists(fileName)
#Out: True
fileName = r"C:\Test"
os.path.exists(fileName)
#Out: True

Por lo tanto, sólo use os.path.isfile si quiere comprobar si el archivo existe.

pathlib.Path.is_file() para comprobar si el archivo existe (>=Python 3.4)

Desde Python 3.4, introduce un método orientado a objetos en el módulo pathlib para comprobar si existe un archivo.

from pathlib import Path

fileName = r"C:\Test\test.txt"
fileObj = Path(fileName)
fileObj.is_file()

De forma similar, también tiene métodos is_dir() y exists() para comprobar si un directorio o un archivo/directorio existe.

Artículo relacionado - Python file-path

  • Cómo obtener todos los archivos de un directorio
  • Cómo borrar un archivo y un directorio en Python
  • Cómo encontrar archivos con una cierta extensión sólo en Python
  • comments powered by Disqus