Lee y escribe información en archivos usando Python

Una de las funcionalidades que tiende a hacerse compleja en múltiples lenguajes de programación es la lectura y escritura de archivos de texto. Sin embargo, en Python es una tarea bastante sencilla (como es usual en Python), por medio de las funciones print() y write() para escribir en archivos y open() para leerlos.

Vamos entonces a explorar las diferentes funcionalidades con su propósito particular.

Creando y leyendo un archivo con open() en Python

La función open() en Python, nos permite abrir un archivo existente. Sin embargo, si no existen lo creará inmediatamente. Cabe resaltar, que al "abrir" un archivo, lo estamos preparando para su lectura, de modo que podremos acceder a su contenido (si lo tiene) e incluso, una vez abierto, podríamos escribir en él. Su uso es el siguiente:

contenido = open("nombre-del-archivo.txt", "modo")

En el código anterior, la variable "contenido" tendrá todas las líneas que compongan al archivo y las podremos recorrer con un ciclo for.

Por otro lado, open() recibe entonces el nombre del archivo como primer parámetro y el modo que se usará para abrir ese archivo.

Existen varios modos para abrir los archivos, así que exploremos los más comunes:

  • r: Abre el archivo en modo de solo lectura. Es decir, no lo podremos modificar, solo obtener y usar sin contenido sin realizar cambio alguno. Si el archivo no existe, el programa fallará.
  • r+: Abre el archivo en modo lectura y escritura. Pudiendo así no solo obtener y usar su contenido, sino modificarlo si se desea.
  • w: Abre el archivo en solo modo escritura. Va a sustituir el archivo original si existe antes o crear uno nuevo si no existe. Quiere decir entonces, que el contenido original que tenga ese archivo se perderá una vez escribas en él.
  • a: Abre el archivo para escritura, pero permitiendo agregar contenido al existente. Esto quiere decir que el contenido original se conserva y lo que escribas se agregará al final del archivo. Si el archivo no existe, se crea uno nuevo.
  • a+: Abre el archivo en modo de escritura para agregar contenido y lectura, permitiendo así agregar contenido al final y leerlo también.

De ese modo, si quieres pasar contenido a un archivo sin eliminar el contenido original y además agregarle contenido, usas el modo a+. Si solo necesitas leer su contenido y nada más, entonces usar r, así:

## Agregarás contenido y lo podrás leer contenido = open("nombre-del-archivo.txt", "a+") ## Solo podrás leer el contenido contenido = open("nombre-del-archivo.txt", "r")

Es importante notar, que la ruta hacia el archivo, se calcula desde la raíz de tu programa Python. De ese modo, tu archivo se creará o se leerá desde allí, a menos que indiques una ruta diferente, como "ruta/hacia/el/archivo.txt", teniendo así varias subcarpetas donde se ubicaría tu archivo. Es importante tener en cuenta que las subcarpetas para tu programa deben existir antes de intentes usar el archivo, pues Python no las va a crear por ti.

Cómo leer un archivo y mostrar su contenido en Python

Veamos entonces cómo usar open() para abrir un archivo y recorrer su contenido para mostrarlo en pantalla:

## Abrimos en modo solo lectura contenido = open("nombres.txt", "r") ## Recorremos y mostramos cada línea enumerada contador = 1 for línea in contenido: print("Línea", contador, ":", línea) contador += 1

Escribiendo en archivos en Python

Como indiqué al comienzo, hay dos formas de escribir contenido en archivos con Python, así que veamos ambas. Cabe resaltar que, en ambos casos, necesitamos abrir el archivo en modo de escritura, ya sea con w, r+, a o a+.

Cómo escribir en un archivo usando write() en Python

La función write(), la podemos usar para escribir en un archivo ya abierto y nos recibe solo el texto (string) que vayamos a agregar. Veamos cómo escribir una lista de nombre en un archivo:

## La lista de nombres a escribir nombres = ["Juan", "Susana", "Andrea", "Melanie", "Andrés"] ## Abrimos en modo escritura archivo = open("nombres.txt", "w") ## Recorremos la lista y agregamos cada nombre al archivo for nombre in nombres: archivo.write(nombre + "\n") ## Muy importante cerrar el archivo. archivo.close()

En el código anterior, hay varias cosas por notar:

  • ¡Muy importante! Debes cerrar el archivo que estuviste escribiendo con close(). Eso permitirá que el contenido sea finalmente escrito en el archivo (de lo contrario quedará vacío) y además que se pueda liberar el archivo para ser usado luego (o incluso eliminado).
  • La función write() no agrega saltos de línea, así que debemos ponerlos con "\n" para cada línea que deseamos escribir en el archivo.
  • El archivo debe abrirse en alguno de los modos de escritura y primero debe abrirse con open(), antes de poder llamar a write y escribir en él.

Escribiendo en un archivo con Python usando print()

Ahora, exploremos otro modo de escribir en un archivo, esta vez, usando print(). Notarás que es la misma función con la cual mostramos mensajes por pantalla. Sin embargo, podemos usarla para imprimir valores en un archivo con el parámetro "file" y sacando ventaja de su funcionamiento habitual (saltos de línea, espacios y demás).

## La misma lista de nombres a escribir nombres = ["Juan", "Susana", "Andrea", "Melanie", "Andrés"] ## Abrimos en modo escritura archivo = open("nombres.txt", "w") ## Recorremos la lista y agregamos cada nombre al archivo for nombre in nombres: print(nombre, file=archivo) ## NO olvides cerrar el archivo archivo.close()

Si ejecutas el código anterior en Python, verás que el funcionamiento es el mismo. Sin embargo, al usar la función print() nos evitamos poner el salto de línea "\n", pues print() lo hace automáticamente en cada llamado. Además, como vemos, lo único que hace falta para imprimir en el archivo, es usar el parámetro file, indicando el archivo que ya tenemos abierto para escritura.

Muy bien, eso es todo respecto a lectura y escritura de archivo en Python. Cualquier cometario o duda, lo puedes dejar en la sección de comentarios en la parte inferior.

La última actualización de este artículo fue hace 4 años

Foto de JuanDMeGon

Juan David Meza González

JuanDMeGon

Magister, Ingeniero, Desarrollador
Web & Instructor

¡Listo!

En breve recibirás un mensaje de confirmación. Verifica, por si acaso, la carpeta de correo no deseado.

...

Si te parece bien, te enviaré de vez en cuando, mensajes de interés sobre los temas que se tratan en el sitio.

Tu dirección de correo electrónico será almacenada con un interés según el artículo en el que te encuentres.

Por supuesto, puedes cancelar tu suscripción en cualquier momento.