Skip to content

T1. Captura, limpieza y normalización de datos🔗

1. Introducción🔗

La idea clave: del dato al archivo y del archivo al dato

  1. Abrir el archivo (de forma segura).
  2. Leer y/o escribir.
  3. Procesar: limpiar, filtrar, transformar.
  4. Guardar resultados si corresponde.
  5. Cerrar correctamente el fichero (aunque haya errores).
  6. [Opcional] Seguridad del fichero (evitar corrupciones).

Para lograr de forma "pythonica" lo anterior deberemos estudiar algunos conceptos previos: 1. Excepciones 2. Archivos con formato: - csv - json - xml 3. Sistemas de archivos 3. Bases de datos: - SQlite - MariaDB

2. Excepciones🔗

  1. ¿Qué es?
  2. Modelo de excepciones try-except
  3. Excepciones genéricas y con as e
  4. else y finally
  5. Lanzar o relanzar excepciones raise
  6. Jerarquía de excepciones

    ⚠️ Evita capturar BaseException ya que incluye KeyboardInterrupt y SystemExit.

  7. Excepciones personalizadas
  8. Ejercicios
  9. Buenas prácticas

Avanzado 10. Logging 11. Test

3. Archivos con formato🔗

Archivos sin formato🔗

  1. 'LBYL' vs 'EAFP': El enfoque "pythonico"
  2. Posibles problemas -> excepciones
  3. Codificaciones: estándar utf-8
  4. Ciclo de vida
  5. Modos de operación
  6. Lectura y escritura con with open()

Ciclo de vida🔗

Cada fichero pasa por un ciclo claro: 1. Se solicita apertura. 2. El sistema devuelve un descriptor (file descriptor). 3. Se realizan operaciones (lectura/escritura). 4. Se libera el recurso mediante cierre.

Si el recurso no se libera correctamente, el sistema puede quedarse sin descriptores disponibles.

Modos🔗

De apertura: r/w/a/x - "default": 'r' Lectura (error si no existe) - 'w' Escritura (sobrescribe) - 'a' Añadir al final - 'x' Crear archivo nuevo

De trabajo: - 'b' Modo binario - 't' Modo texto (por defecto)

with open()🔗

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

Otras opciones: - newline: necesario desactivar en csv - buffering - errors


3️⃣ Estrategias de Lectura

🟩 .read() — Cargar todo en memoria
🟦 .readlines() — Lista de líneas
🟨 Iteración directa — Método recomendado

4️⃣ El Puntero del Archivo

🟩 seek() — mover el puntero
🟦 tell() — saber dónde estamos

5️⃣ Escritura y Buffers

🟩 Modos de escritura: w vs a vs x
🟦 write() devuelve cuántos caracteres ha escrito
🟨 write() NO añade salto de línea automáticamente
🟧 writelines(): escribe muchas líneas, pero con trampa
🟥 Buffers: por qué a veces “no se ve” lo escrito
🟪 flush() para forzar escritura inmediata
🟫 Escritura segura: evitar corrupción con archivos temporales

6️⃣ Modos avanzados

🟦 Atención al puntero

Formato csv🔗

El formato csv🔗

El "standard" y las variantes.

El módulo csv🔗