Entrada y salida de archivos en Python: lectura, escritura y seguridad

Domina operaciones de archivos con `with`, modos de apertura, codificación y manejo defensivo de errores para flujos reales.

Trabajar con archivos implica gestionar recursos del sistema: descriptor abierto, permisos, codificación y posibles fallos de E/S.

`with open(...)` es el patrón estándar porque garantiza cierre del recurso incluso cuando ocurre excepción.

Elegir modo correcto (`r`, `w`, `a`, `rb`, `wb`) evita sobrescrituras accidentales o lecturas inválidas.

La codificación (`encoding='utf-8'`) debe declararse explícitamente para evitar errores con acentos o caracteres especiales.

  • Abre cada archivo con el modo que corresponda al caso de uso real.
  • `r` lee (falla si no existe), `w` sobrescribe o crea, `a` agrega al final, `x` crea y falla si ya existe.
  • En binario (`rb`, `wb`) no hay decodificación textual; úsalo para imágenes, zip, pdf, etc.
  • En texto, especifica siempre UTF-8 para portabilidad entre sistemas.
  • Para archivos grandes, iterar por líneas evita cargar todo en memoria.

1) `open()` y modos de archivo

Abre cada archivo con el modo que corresponda al caso de uso real.

`r` lee (falla si no existe), `w` sobrescribe o crea, `a` agrega al final, `x` crea y falla si ya existe.

En binario (`rb`, `wb`) no hay decodificación textual; úsalo para imágenes, zip, pdf, etc.

En texto, especifica siempre UTF-8 para portabilidad entre sistemas.

2) Lectura eficiente y procesamiento por líneas

Para archivos grandes, iterar por líneas evita cargar todo en memoria.

`read()` trae todo el contenido; útil para ficheros pequeños y parseo completo.

Iterar `for linea in archivo` es más eficiente para logs o datasets extensos.

Aplica `strip()` al final de línea cuando quieras normalizar entradas.

3) Manejo de errores de E/S

Errores de archivo son normales: archivo ausente, permisos o rutas incorrectas.

Captura `FileNotFoundError` para rutas inexistentes y `PermissionError` para acceso denegado.

Evita silenciar excepciones: registra contexto útil para depuración.

Para scripts CLI, muestra feedback claro; para backend, convierte error en respuesta controlada.

  • Usa `with` siempre que puedas.
  • Declara codificación explícita.
  • No asumas existencia de rutas.
  • Separa lógica de I/O de lógica de negocio.
Python
12

Entrada y salida de archivos en Python: lectura, escritura y seguridad

Domina operaciones de archivos con `with`, modos de apertura, codificación y manejo defensivo de errores para flujos reales.

Código del tema: Automatizacion y codigo legible en Python

📘 Teoría

1) `open()` y modos de archivo

Abre cada archivo con el modo que corresponda al caso de uso real.

1

`r` lee (falla si no existe), `w` sobrescribe o crea, `a` agrega al final, `x` crea y falla si ya existe.

2

En binario (`rb`, `wb`) no hay decodificación textual; úsalo para imágenes, zip, pdf, etc.

3

En texto, especifica siempre UTF-8 para portabilidad entre sistemas.

Escritura segura con UTF-8
contenido = 'python
curso profesional'

with open('notas.txt', 'w', encoding='utf-8') as f:
    f.write(contenido)

2) Lectura eficiente y procesamiento por líneas

Para archivos grandes, iterar por líneas evita cargar todo en memoria.

`read()` trae todo el contenido; útil para ficheros pequeños y parseo completo.

Iterar `for linea in archivo` es más eficiente para logs o datasets extensos.

Aplica `strip()` al final de línea cuando quieras normalizar entradas.

1

Lectura completa

Para archivos de tamaño controlado.

2

Lectura por línea

Más adecuada para volumen alto.

3) Manejo de errores de E/S

Errores de archivo son normales: archivo ausente, permisos o rutas incorrectas.

Captura `FileNotFoundError` para rutas inexistentes y `PermissionError` para acceso denegado.

Evita silenciar excepciones: registra contexto útil para depuración.

Para scripts CLI, muestra feedback claro; para backend, convierte error en respuesta controlada.

  • Usa `with` siempre que puedas.
  • Declara codificación explícita.
  • No asumas existencia de rutas.
  • Separa lógica de I/O de lógica de negocio.
Lectura defensiva con excepciones específicas
def leer_texto(path: str) -> str:
    try:
        with open(path, 'r', encoding='utf-8') as f:
            return f.read()
    except FileNotFoundError:
        return 'archivo no encontrado'


print(leer_texto('inexistente.txt'))

🧪 Aprende probando

Ejemplo Ejemplo: log incremental con modo append Añade líneas de auditoría sin borrar contenido previo.

🏁 Retos

Reto Reto: reemplaza apertura manual por context manager Refactoriza a `with open(...)` para cierre automático del archivo.

🧰 Recursos

Test

Comprueba tus conocimientos con un test sobre Python.

Test de Python

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros 😉.

Esta la hice en febrero de 2026 para facilitar el aprendizaje de mis alumnxs. Aprender desarrollo web practicando. La idea es que crezca semanalmente con nuevos temas, tests y retos.

Inspirado en MDN, en W3Schools, en Codepen, en el crack de Manz y en mil sitios de documentación sobre desarrollo web. Quería aportar además de bloques teóricos con ejemplos, la gamificación de los retos y el sistema de test que ya tenía en culTest .

Si te gustó, si no te gustó, si quieres saludarme, o invitarme a 🍻 no dudes en escribirme en cristianeslava@gmail.com .