En el artículo de hoy vamos a ver cómo podemos leer ficheros con Python. Analizaremos las dos formas en las que podemos leer su contenido, bien sea de forma completa o línea por línea.
A lo largo del código vamos a utilizar el módulo os
que nos permite acceder a diferentes interfaces para realizar operaciones sobre el sistema operativo. En concreto vamos a utilizar el módulo os.path
que nos permite gestionar las ubicaciones de los archivos. Es por ello que vamos a importar este módulo os.path
from os import path
Lo siguiente será comprobar que el fichero que vamos a leer exista, ya que, en caso contrario, el acceso de lectura fallaría. Para poder comprobar que el fichero existe nos ayudamos de la función .exists()
del módulo os.path
.
nombre_fichero = "fichero.txt" if (path.exists(nombre_fichero)): # Acciones sobre el fichero else: print(f"El fichero {nombre_fichero} no existe")
Lo siguiente será abrir el fichero. Para abrir el fichero utilizamos la función .open()
. La función .open()
es una función base del lenguaje Python. Esta función recibe muchos parámetros, como puedes ver en su definición, pero nos vamos a quedar con los dos primeros que son el nombre del fichero y el modo de apertura del fichero. En este caso, como vamos a abrir el archivo para leerlo, utilizaremos el modificador 'r'
.
Por lo tanto, la forma de abrir el archivo es la siguiente:
with open(nombre_fichero,"r") as fichero:
Como podemos ver, utilizamos la estructura with para abrir el fichero. La estructura with nos permite encapsular las operaciones de lectura y escritura en un bloque, de forma que se garantice el cierre del fichero incluso si se producen errores durante la lectura o escritura. Esta es una forma segura y recomendada de trabajar con ficheros en Python.
Lo siguiente será realizar la lectura, bien sea de forma completa o línea a línea.
Lectura de ficheros de forma completa
Para realizar una lectura completa de un fichero con Python lo que haremos será utilizar el método .read()
sobre el fichero. Esta lectura dejará todo el contenido en una variable. en nuestro caso lo que hacemos es mostrarla por consola.
with open(nombre_fichero,"r") as fichero: print(fichero.read())
El interface base que define el acceso a ficheros es
IOBase
, en dicha clase puedes ver todos los métodos que nos permiten manejar un fichero para su lectura, escritura, búsqueda, truncado,… Aunque luego tienes clases especializadas comoTextIOBase
especializados para lectura de texto oRawIOBase
para lecturas “en crudo” del fichero.
Leer ficheros por líneas
En este otro caso vamos a realizar la lectura por líneas del fichero. Para ello tenemos que saber que la operación .open()
nos ha dejado un puntero a las líneas del fichero en una lista que podemos recorrer. Por lo que podemos utilizar una estructura for
para recorrer cada una de las líneas.
numberline = 1 with open(nombre_fichero,"r") as fichero: for linea in fichero: print(f"{numberline}-{linea}") numberline = numberline+1
Lo que hacemos es utilizar el método print()
para volcar cada una de las líneas por consola. Hemos utilizado un contador adicional para poder poner cada una de las líneas por la que vamos.
Así ya sabemos las dos formas que tenemos para poder leer ficheros con Python.