SIN · Sintaxis 7 · Archivos y errores

32.Archivos de texto

Leer y escribir información en archivos para que los datos se conserven después de cerrar el programa.

¿Qué es?

Mientras un programa se ejecuta, sus datos viven en la memoria y se pierden al cerrarlo. Un archivo guarda la información en el disco, para que siga ahí la próxima vez: una lista de alumnos, un registro de ventas, la configuración de un juego.

Es la diferencia entre anotar algo en el pizarrón (se borra al final de la clase) y escribirlo en tu cuaderno (lo encuentras mañana).

Lo básico

  1. Abrir el archivo, indicando para qué (leer, escribir o agregar).
  2. Leer o escribir.
  3. Cerrarlo (Python lo hace solo si usas with).
Modo Para qué Si el archivo no existe Si ya existe
"r" Leer Error Lo lee
"w" Escribir Lo crea Lo borra y escribe desde cero
"a" Agregar al final Lo crea Agrega sin borrar

Sintaxis (pseudocódigo / Python)

Pseudocódigo general (no ejecutable en PSeInt)

Abrir "alumnos.txt" para escribir como archivo
Escribir en archivo "Ana"
Escribir en archivo "Luis"
Cerrar archivo

Abrir "alumnos.txt" para leer como archivo
Mientras no sea fin de archivo Hacer
	Leer linea de archivo
	Escribir linea
FinMientras
Cerrar archivo

Python

# Escribir (crea o reemplaza el archivo)
with open("alumnos.txt", "w", encoding="utf-8") as archivo:
    archivo.write("Ana\n")
    archivo.write("Luis\n")
    archivo.write("Sofía\n")

# Agregar al final
with open("alumnos.txt", "a", encoding="utf-8") as archivo:
    archivo.write("Pedro\n")

# Leer línea por línea
with open("alumnos.txt", "r", encoding="utf-8") as archivo:
    for numero, linea in enumerate(archivo, start=1):
        print(numero, linea.strip())

Salida:

1 Ana
2 Luis
3 Sofía
4 Pedro
Para… Código
Leer todo como un texto archivo.read()
Leer todas las líneas en una lista archivo.readlines()
Recorrer línea por línea for linea in archivo:
Escribir archivo.write(texto) (agrega \n para cambiar de línea)

with cierra el archivo automáticamente al terminar el bloque, aunque haya un error.

Ejemplo guiado

Problema: guardar las calificaciones de un grupo en un archivo CSV (valores separados por comas) y después leerlo para calcular el promedio.

import csv

# 1. Guardar
datos = [
    ["nombre", "calificacion"],
    ["Ana", 9.1],
    ["Luis", 7.4],
    ["Sofía", 8.2],
]
with open("calificaciones.csv", "w", newline="", encoding="utf-8") as f:
    escritor = csv.writer(f)
    escritor.writerows(datos)

# 2. Leer y calcular
suma = 0
contador = 0
with open("calificaciones.csv", "r", newline="", encoding="utf-8") as f:
    lector = csv.DictReader(f)
    for fila in lector:
        print(f"{fila['nombre']}: {fila['calificacion']}")
        suma += float(fila["calificacion"])
        contador += 1

print("Promedio:", round(suma / contador, 2))

Salida esperada:

Ana: 9.1
Luis: 7.4
Sofía: 8.2
Promedio: 8.23

El archivo calificaciones.csv se puede abrir también en Excel o LibreOffice Calc. Fíjate en que los valores se leen como texto y hay que convertirlos con float().

Errores comunes

# ✗ Incorrecto
with open("no_existe.txt", "r", encoding="utf-8") as f:
    print(f.read())
FileNotFoundError: [Errno 2] No such file or directory: 'no_existe.txt'

Buenas prácticas

  • Usa siempre with: el archivo se cierra solo.
  • Indica encoding="utf-8" al abrir.
  • Usa csv o json en lugar de inventar tu propio formato.
  • Limpia cada línea con .strip() al leer.
  • Usa pathlib para manejar rutas de forma segura en Windows y Linux.
  • No guardes contraseñas ni datos sensibles en archivos de texto sin protección.

Material descargable

Aún no hay material descargable para este tema. Pronto habrá cuadernillos, manuales o laboratorios.

Referencias

© solutions_ · Fundamentos de programación · 32 Archivos de texto