Cómo leer y escribir archivos de texto en Python

Actualizado el: 11/07/2026
Tempo de leitura: 4 minutos
Leitura e escrita de arquivos TXT usando Python

Los archivos de texto son una forma sencilla de guardar información entre ejecuciones de un programa. Se utilizan para configuraciones, registros, listas, notas, exportaciones y pequeños proyectos que todavía no necesitan una base de datos. Python incluye todo lo necesario para abrir, leer, escribir y procesar estos archivos sin instalar bibliotecas externas.

En esta guía aprenderás a trabajar con archivos de texto en Python usando open(), context managers, codificación UTF-8 y pathlib. También veremos cómo leer archivos grandes línea por línea, añadir contenido, controlar errores y evitar sobrescribir datos por accidente.

Cómo abrir un archivo de texto

La función integrada open() recibe la ruta, el modo de apertura y la codificación. Para profundizar en rutas modernas, consulta la guía de pathlib en Python.

archivo = open("notas.txt", "r", encoding="utf-8")
contenido = archivo.read()
archivo.close()

print(contenido)

Este ejemplo funciona, pero depende de que close() se ejecute. Si aparece una excepción antes, el recurso puede permanecer abierto más tiempo de lo necesario.

Usar with para cerrar automáticamente

La forma recomendada es utilizar with. El archivo se cierra al salir del bloque, incluso si ocurre un error.

with open("notas.txt", "r", encoding="utf-8") as archivo:
    contenido = archivo.read()

print(contenido)

Este patrón también se utiliza con conexiones de bases de datos y otros recursos que deben liberarse correctamente.

Modos de apertura

ModoComportamiento
rLee un archivo existente.
wEscribe desde cero y reemplaza el contenido anterior.
aAñade contenido al final.
xCrea un archivo nuevo y falla si ya existe.
r+Permite leer y escribir un archivo existente.

El modo w merece atención: si el archivo ya existe, su contenido se pierde. Para datos importantes, crea una copia o escribe primero en un archivo temporal.

Leer todo el contenido

with open("mensaje.txt", encoding="utf-8") as archivo:
    texto = archivo.read()

print(texto)

read() es cómodo para archivos pequeños. En documentos grandes puede consumir demasiada memoria porque carga todo a la vez.

Leer línea por línea

Los archivos son iterables. Puedes procesar cada línea sin cargar el documento completo.

with open("eventos.log", encoding="utf-8") as archivo:
    for numero, linea in enumerate(archivo, start=1):
        texto = linea.rstrip("\n")
        print(f"{numero}: {texto}")

La guía de enumerate() en Python explica cómo numerar líneas y registros sin mantener un contador manual.

Escribir contenido

contenido = "Primera línea\nSegunda línea\n"

with open("resultado.txt", "w", encoding="utf-8") as archivo:
    archivo.write(contenido)

Python no añade saltos automáticamente. Debes incluir \n cuando quieras separar líneas.

Escribir varias líneas

lenguajes = ["Python", "JavaScript", "Go"]
texto = "\n".join(lenguajes) + "\n"

with open("lenguajes.txt", "w", encoding="utf-8") as archivo:
    archivo.write(texto)

writelines() también es útil, pero no agrega separadores por sí solo.

Añadir contenido sin borrar lo anterior

from datetime import datetime

momento = datetime.now().isoformat(timespec="seconds")

with open("actividad.log", "a", encoding="utf-8") as archivo:
    archivo.write(f"{momento} - aplicación iniciada\n")

Para trabajar con fechas, zonas horarias y formatos consistentes, revisa la guía de datetime en Python.

Trabajar con pathlib

from pathlib import Path

ruta = Path("datos") / "notas.txt"
ruta.parent.mkdir(parents=True, exist_ok=True)
ruta.write_text("Contenido en UTF-8\n", encoding="utf-8")

texto = ruta.read_text(encoding="utf-8")
print(texto)

read_text() y write_text() son ideales para archivos pequeños. Para streaming o control detallado, utiliza ruta.open().

Manejar errores específicos

from pathlib import Path

ruta = Path("configuracion.txt")

try:
    contenido = ruta.read_text(encoding="utf-8")
except FileNotFoundError:
    print(f"No existe el archivo: {ruta}")
except PermissionError:
    print(f"No hay permiso para leer: {ruta}")
except UnicodeDecodeError as error:
    print(f"La codificación no coincide: {error}")
else:
    print(contenido)

Captura excepciones concretas. La guía de try y except en Python muestra cómo manejar errores sin ocultar fallos de programación.

Procesar y ordenar un archivo

from pathlib import Path

origen = Path("nombres.txt")
destino = Path("nombres_limpios.txt")

with origen.open(encoding="utf-8") as archivo:
    nombres = {
        linea.strip().title()
        for linea in archivo
        if linea.strip()
    }

resultado = "\n".join(sorted(nombres)) + "\n"
destino.write_text(resultado, encoding="utf-8")

El conjunto elimina duplicados y sorted() genera un resultado ordenado. Puedes comparar ambos mecanismos en la guía de sort() y sorted() en Python.

Escritura más segura con un temporal

from pathlib import Path

ruta = Path("configuracion.txt")
temporal = ruta.with_suffix(".tmp")

temporal.write_text("modo=produccion\n", encoding="utf-8")
temporal.replace(ruta)

La sustitución al final reduce el riesgo de dejar el archivo principal incompleto si el proceso se interrumpe.

Errores frecuentes

  • Olvidar cerrar el archivo al no usar with.
  • Abrir con w y borrar contenido importante.
  • No especificar la codificación.
  • Usar read() con archivos enormes.
  • Eliminar espacios significativos con strip().
  • Ignorar errores de permisos o archivos ausentes.
  • Construir rutas manualmente con separadores específicos del sistema.

Conclusión

Para trabajar con archivos de texto en Python de forma fiable, utiliza with, declara UTF-8, elige cuidadosamente el modo de apertura y procesa línea por línea cuando el archivo pueda ser grande. pathlib simplifica las rutas y las excepciones específicas hacen que los fallos sean comprensibles.

Antes de sobrescribir datos importantes, crea una copia o utiliza un archivo temporal. Estas prácticas evitan pérdidas de información y preparan el código para proyectos mayores.

Documentación oficial

Consulta la documentación oficial de Python sobre la función open() y la referencia completa del módulo pathlib para revisar modos de apertura, codificación, rutas y manejo de archivos.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Contenido del artículo

    Artículos relacionados

    Uso do operador in em Python para verificação em coleções
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Operador in en Python: pruebas de pertenencia

    Aprende a usar el operador in en Python con strings, listas, sets, diccionarios, rangos, generadores, not in y clases personalizadas.

    Ler mais

    Tempo de leitura: 3 minutos
    11/07/2026
    Introdução ao Python para iniciantes
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    List comprehensions en Python: guía completa

    Aprende list comprehensions en Python con transformaciones, filtros, condiciones, bucles anidados, diccionarios, sets y generadores.

    Ler mais

    Tempo de leitura: 3 minutos
    11/07/2026
    Leitura e escrita de arquivos CSV em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Archivos CSV en Python: leer, escribir y procesar

    Aprende a leer, escribir, filtrar y validar archivos CSV en Python con reader, writer, DictReader, DictWriter, UTF-8 y streaming.

    Ler mais

    Tempo de leitura: 3 minutos
    11/07/2026
    Fatiamento de listas (slicing) em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Slicing en Python: guía completa con ejemplos

    Domina el slicing en Python con start, stop, step, índices negativos, copias, reemplazos, eliminación, inversión y ejemplos prácticos.

    Ler mais

    Tempo de leitura: 3 minutos
    11/07/2026
    Pessoa usando tablet com caneta digital para planejar tarefas em checklist, representando organização, planejamento e produtividade digital.
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    sort() vs sorted() en Python: diferencias y ejemplos

    Aprende las diferencias entre sort() y sorted() en Python, con claves personalizadas, orden descendente, varios criterios y errores comunes.

    Ler mais

    Tempo de leitura: 3 minutos
    11/07/2026
    Uso da função enumerate em loops Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    enumerate() en Python: bucles con índices

    Aprende enumerate() en Python para recorrer valores con índices, elegir el inicio, combinarlo con zip, procesar archivos y evitar contadores

    Ler mais

    Tempo de leitura: 3 minutos
    11/07/2026