Ir al contenido principal

Python: escribir en un archivo: Cómo trabajar con archivos de texto, CSV y JSON de forma segura

Aprende a escribir en archivos en Python utilizando herramientas integradas, patrones comunes y prácticas recomendadas para aplicaciones del mundo real.
Actualizado 21 ene 2026  · 7 min leer

En algún momento, todos los programas Python necesitan guardar algo: registros, resultados, entradas de los usuarios, archivos de configuración o datos procesados. Es posible que estés exportando resultados de análisis, registrando lo que hizo tu script o manteniendo el estado de la aplicación entre ejecuciones. Sea cual sea el caso, escribir en archivos es una habilidad básica de Python que usarás una y otra vez.

En esta guía, aprenderás a escribir en archivos en Python utilizando la biblioteca estándar. Comenzaremos con los conceptos básicos y luego pasaremos a los modos de archivo, las codificaciones, los formatos estructurados como JSON y CSV, y los patrones listos para la producción que hacen que tu código sea más seguro y predecible. Al final, podrás escribir archivos con confianza en aplicaciones reales, no solo en ejemplos sencillos.

Si ya te sientes cómodo con los conceptos básicos de Python, este tutorial te ayudará a salvar la distancia entre los scripts y el manejo de archivos a nivel profesional. Si deseas reforzar los conceptos básicos a medida que avanzas en Python, nuestros cursos Introducción a Python y Python intermedio combinan bien con este tutorial.

Aprende Python desde cero

Domina Python para la ciencia de datos y adquiere habilidades muy demandadas.
Empieza a aprender gratis

Primeros pasos: Tu primer archivo escrito en Python

La forma más rápida de entender la escritura de archivos en Python es hacerlo realmente. Comencemos con el ejemplo más sencillo posible y sigamos avanzando a partir de ahí.

El patrón básico (paso a paso)

En esencia, escribir en un archivo sigue un patrón sencillo:

  1. Abrir un archivo
  2. Escribir contenido en él
  3. Cierra el archivo.

Python proporciona la función integrada ` open() ` para gestionar el primer paso.

La función open(), explicada de forma sencilla

La función ` open() ` conecta tu código Python a un archivo en el disco. Tú le dices dos cosas:

  • ¿Con qué archivo quieres trabajar?
  • Cómo quieres trabajar con él

Para escribir, el modo más común es « "w" », que significa «escribir». Si el archivo no existe, Python lo crea. Si existe, Python lo sobrescribe.

file = open("example.txt", "w")
file.write("Hello, world!")
file.close()

Ejecuta este script y Python creará un archivo llamado example.txt en el mismo directorio que tu código.

¿Qué acaba de pasar?

  • open("example.txt", "w") abre o crea el archivo

  • write() envía texto al archivo

  • close() vacía los datos y libera el archivo

Esto funciona, pero no es la forma adecuada de escribir archivos a largo plazo.

La forma correcta en Python: Uso de gestores de contexto

Abrir y cerrar archivos manualmente es fácil de olvidar y fácil de hacer mal. Por eso Python recomienda utilizar gestores de contexto.

He aquí por qué es mejor utilizar with: El uso de with garantiza que el archivo siempre se cierre correctamente, incluso si algo sale mal durante la escritura. Hace que tu código sea más seguro y fácil de leer.

with open("example.txt", "w") as file:
    file.write("Hello, world!")

Una vez que finaliza el bloque ` with `, Python cierra automáticamente el archivo. Este patrón aparece en todas partes en el código Python profesional y vale la pena memorizarlo. Lo verás repetidamente en nuestro programa de programación en Python y en nuestro programa de escritura de código limpio en Python.

Ejemplo de escritura en un archivo con Python

Apliquemos esto a algo un poco más realista. Aquí voy a crear una entrada diaria en tu diario.

from datetime import date

today = date.today().isoformat()

with open("journal.txt", "a", encoding="utf-8") as file:
    file.write(f"{today}: Practiced writing files in Python.\n")

Esto introduce dos ideas importantes:

  • Modo de adición ("a")

  • Redactar entradas estructuradas y repetibles

  • Cada ejecución añade una nueva línea sin eliminar las entradas anteriores.

Comprender los modos de archivo: Cuándo utilizar w, a, x y r+

Una vez que sabes cómo escribir en un archivo, la decisión más importante es cómo abrirlo. Los modos de archivo controlan si los datos se sobrescriben, se conservan o se protegen.

Modo de escritura (w): Empezar de cero

El modo de escritura crea un archivo si no existe. Si lo hace, también lo sobrescribe.

with open("report.txt", "w") as file:
    file.write("Daily sales report\n")

Utiliza esto cuando quieras empezar de cero. Ten cuidado, porque este modo elimina los datos existentes de forma silenciosa.

Modo añadir (a): Añadir sin perder datos

El modo de añadir añade contenido al final de un archivo.

with open("activity.log", "a") as file:
    file.write("User logged in\n")

Es ideal para registros y registros incrementales, y es uno de los modos más seguros para los sistemas de producción.

Modo exclusivo (x): Creación segura de archivos

El modo exclusivo crea un archivo solo si aún no existe.

try:
    with open("config.txt", "x") as file:
        file.write("initialized=true")

except FileExistsError:
    print("File already exists.")

Esto resulta útil para scripts de configuración en los que sobrescribir sería arriesgado.

Modo lectura-escritura (r+): Modificar archivos existentes

Este modo permite leer y escribir, pero requiere que el archivo exista.

with open("notes.txt", "r+") as file:
    content = file.read()
    file.write("\nNew note added.")

La escritura se realiza en la posición actual del puntero del archivo, por lo que es importante comprender el movimiento del cursor en este caso.

Entonces, ¿qué modo deberías utilizar? Esta es mi guía mental:

  • Sobrescribir datos existentes → w

  • Conservar datos y añadir más → a

  • Evitar sobrescrituras → x

  • Lee y actualiza el mismo archivo → r+

Para reforzar visualmente este proceso de decisión:

Python escribir en un archivo cómo

Elegir el modo de archivo adecuado suele depender de la intención: sobrescribir, añadir, proteger o modificar.

Escribir diferentes tipos de contenido en Python

Una vez que te sientas cómodo abriendo archivos con el modo adecuado, la siguiente pregunta es qué es lo que realmente estás escribiendo.

En los programas reales, no siempre escribes una sola cadena. Es posible que estés guardando listas, exportando resultados o trabajando con datos que no sean texto, como imágenes o archivos PDF. En esta sección, aprenderás a escribir diferentes tipos de contenido en archivos de forma segura y eficiente.

Escribir texto y cadenas

El caso más sencillo es escribir texto sin formato. Python ofrece dos métodos principales para ello: write() y writelines().

write() escribe exactamente lo que pasas, sin saltos de línea automáticos.

with open("example.txt", "w") as file:
    file.write("First line\n")
    file.write("Second line\n")

write() vs. writelines()

La diferencia clave es sencilla: write() escribe una cadena cada vez, mientras que writelines() escribe una secuencia de cadenas tal cual; writelines() no añade saltos de línea, por lo que cada elemento debe terminar con \n.

En la práctica, muchos programadores siguen prefiriendo write() en un bucle porque es más fácil de leer.

lines = ["One\n", "Two\n", "Three\n"]

with open("example.txt", "w") as file:
    file.writelines(lines)

Escribir listas de manera eficiente

items = ["apple", "banana", "cherry"]

content = "\n".join(items)

with open("fruits.txt", "w") as file:
    file.write(content)

La unión inicial reduce las escrituras repetidas en el disco, lo cual es importante para conjuntos de datos más grandes.

Escribir datos binarios

El modo binario ("wb") es necesario para los archivos que no son de texto.

binary_data = b"\x89PNG\r\n\x1a\n"

with open("image.bin", "wb") as file:
    file.write(binary_data)

Trabajar con codificaciones en Python (por qué tu texto se ve mal)

Los problemas de codificación son uno de los errores más comunes y frustrantes en el manejo de archivos.

Especifica siempre UTF-8.

La codificación explícita evita problemas entre plataformas y caracteres dañados, como puedes ver aquí:

with open("example.txt", "w", encoding="utf-8") as file:
    file.write("Café, résumé, naïve")

Ejemplo real: Texto multilingüe

Ser explícito aquí ahorra horas de depuración más adelante. Esto es lo que quiero decir:

customers = ["Ana García", "François Dupont", "Miyuki 山田"]

with open("customers.txt", "w", encoding="utf-8") as file:
    for name in customers:
        file.write(name + "\n")

Técnicas avanzadas de programación en Python

Una vez que te sientas cómodo escribiendo archivos en Python, el siguiente conjunto de problemas no suele ser cómo escribir, sino cómo hacerlo de forma segura y eficiente. Los archivos grandes, los fallos inesperados y los cuellos de botella en el rendimiento introducen casos extremos que aún no hemos tratado.

Manejo de archivos grandes con escrituras fragmentadas

La salida de streaming mantiene bajo el uso de memoria:

def generate_lines():
    for i in range(1_000_000):
        yield f"Line {i}\n"

with open("large.txt", "w", encoding="utf-8") as file:
    for line in generate_lines():
        file.write(line)

Atomic escribe: Prevención de la corrupción

La idea es evitar escrituras parciales si un programa se bloquea durante la actualización.

import os, tempfile

def atomic_write(path, content):
    with tempfile.NamedTemporaryFile("w", delete=False) as tmp:
        tmp.write(content)
    os.replace(tmp.name, path)

Más allá de los archivos de texto: Escribir JSON y CSV

Una vez que tus datos tienen estructura, el texto sin formato deja de ser la mejor opción. Python facilita la escritura de formatos estructurados comunes como JSON y CSV, por lo que puedes almacenar datos de una manera que sea más fácil de compartir, inspeccionar y procesar posteriormente.

Escribir JSON

Cuando trabajas con diccionarios o datos anidados, JSON suele ser el formato más natural para escribir. El módulojson integrado en Python se encarga de la conversión por ti, por lo que no es necesario que formatees las cadenas manualmente.

import json

data = {"id": 1, "name": "Jeremiah"}

with open("user.json", "w", encoding="utf-8") as file:
    json.dump(data, file, indent=2)

Escribir CSV

Si tus datos están en formato tabular y es probable que se abran en hojas de cálculo o herramientas de BI, CSV es la mejor opción. El módulo csv te ayuda a escribir filas de forma segura sin preocuparte por los delimitadores o las comillas.

import csv

rows = [{"id": 1, "name": "Alice"}, {"id": 2, "name": "Bob"}]

with open("users.csv", "w", newline="", encoding="utf-8") as file:
    writer = csv.DictWriter(file, fieldnames=["id", "name"])
    writer.writeheader()
    writer.writerows(rows)

Errores comunes al escribir en archivos en Python

Aunque escribir archivos en Python es sencillo, unos pocos errores pequeños suelen causar la mayoría de los problemas en el mundo real. Estos problemas no suelen estar relacionados con la sintaxis, sino que se deben a detalles que se pasan por alto, como la gestión de recursos, los modos de archivo o las opciones de rendimiento.

Ten en cuenta los siguientes puntos.

  • Olvidar cerrar archivos → usar ‘with’

  • Sobrescritura involuntaria de datos → modos de doble verificación

  • Ignorar la codificación → especificar siempre UTF-8

  • Escribir archivos grandes de forma ineficiente → salida por lotes o secuencial

La mayoría de los errores aquí provienen de pequeños descuidos, no de una lógica compleja.

Conclusión

Escribir en archivos en Python es sencillo al principio, pero los programas del mundo real exigen más cuidado. En esta guía, has pasado de escribir tu primer archivo a elegir modos de archivo seguros, manejar correctamente las codificaciones, exportar datos estructurados y aplicar patrones listos para la producción.

La conclusión clave es la intención: elige el modo adecuado, sé explícito con respecto a la codificación y escribe de forma defensiva cuando los datos sean importantes.

Conviértete en Desarrollador Python

Adquiere los conocimientos de programación que necesitan todos los desarrolladores de Python.

Oluseye Jeremiah's photo
Author
Oluseye Jeremiah
LinkedIn

Redactor técnico especializado en IA, ML y ciencia de datos, que hace que las ideas complejas sean claras y accesibles.

Preguntas frecuentes

¿Python puede escribir archivos de forma asíncrona?

Sí, con bibliotecas como aiofiles, aunque la mayoría de los scripts no lo necesitan.

¿Cuál es el modo de escritura más seguro?

Anexar ("a") o exclusivo ("x") dependiendo de la intención.

¿Por qué tu texto está dañado?

Incompatibilidad de codificación: utiliza siempre UTF-8.

¿Dónde se guarda tu archivo?

En relación con el directorio de trabajo del script.

¿Debería usar pathlib?

Sí, para un manejo más limpio y multiplataforma de las rutas.

Temas

Aprende Python con DataCamp

Curso

Introducción a Python

4 h
6.7M
Domina los fundamentos del análisis de datos con Python en cuatro horas y descubre sus paquetes más usados.
Ver detallesRight Arrow
Iniciar curso
Ver másRight Arrow
Relacionado

Tutorial

Tutorial de Excel en Python: La guía definitiva

Aprende a leer e importar archivos Excel en Python, a escribir datos en estas hojas de cálculo y a encontrar los mejores paquetes para hacerlo.
Natassha Selvaraj's photo

Natassha Selvaraj

Tutorial

Python JSON Data: Una guía con ejemplos

Aprende a trabajar con JSON en Python, incluyendo serialización, deserialización, formateo, optimización del rendimiento, manejo de API y comprensión de las limitaciones y alternativas de JSON.
Moez Ali's photo

Moez Ali

Tutorial

Tres métodos para convertir un script de Python en un archivo EXE

Aprende qué es un archivo ejecutable y cómo convertir un script de Python en un archivo .exe utilizando PyInstaller, Nuitka y auto-py-to-exe.
Kurtis Pykes 's photo

Kurtis Pykes

Tutorial

Tutorial de módulos de Python: Importarlos, escribirlos y utilizarlos

Aprende a crear e importar módulos de Python. ¡Descubre las mejores prácticas, ejemplos y consejos para escribir código Python reutilizable, organizado y eficiente!

Nishant Kumar

Tutorial

Tutorial sobre cómo ejecutar scripts en Python

Aprenda cómo puede ejecutar un script Python desde la línea de comandos, y también cómo puede proporcionar argumentos de línea de comandos a su script.
Aditya Sharma's photo

Aditya Sharma

Jupyter and the notebook

Tutorial

Cómo utilizar Jupyter Notebooks: La guía definitiva

Este artículo explica qué son los blocs de notas y por qué deberías utilizarlos. También profundizamos en los cuadernos alojados, que facilitan el intercambio y la colaboración. Este artículo también incluye consejos, trucos y atajos de teclado.
Adam Shafi's photo

Adam Shafi

Ver másVer más