PYTHON – DÍA 5
Ficheros y logs: leer, escribir y procesar datos
1. Objetivo del día
Aprender a:
- leer ficheros de texto
- escribir y crear ficheros
- abrir archivos en distintos modos (
r,w,a) - procesar líneas
- generar logs simples
- manejar rutas del sistema
Este es un día muy útil: a partir de aquí podrás crear scripts reales que lean configuraciones, generen informes o registren actividad.
2. Teoría esencial (5–10 minutos)
2.1. Abrir un fichero
La función estándar es:
f = open("archivo.txt", "modo")
Modos más usados:
"r"→ leer (read)"w"→ escribir (write) y sobrescribe el archivo"a"→ añadir al final (append)"r+"→ leer y escribir
Cerrar un fichero:
f.close()
2.2. Uso recomendado: with open()
Evita olvidar el .close():
with open("archivo.txt", "r") as f:
contenido = f.read()
Al salir del bloque, el archivo se cierra solo.
2.3. Leer contenido línea por línea
with open("archivo.txt", "r") as f:
for linea in f:
print(linea.strip())
strip() elimina saltos de línea y espacios innecesarios.
2.4. Escribir texto
with open("salida.txt", "w") as f:
f.write("Primer registro\n")
2.5. Añadir líneas al final
with open("salida.txt", "a") as f:
f.write("Nueva línea añadida\n")
2.6. Rutas del sistema
import os
directorio = os.getcwd()
lista_archivos = os.listdir()
3. Práctica guiada (aprox. 50 minutos)
3.1. Crear un fichero de prueba
nano datos.txt
Contenido manual:
admin
monitor
devops
invitado
3.2. Leer todo el contenido
nano leer_todo.py
Contenido:
with open("datos.txt", "r") as f:
contenido = f.read()
print(contenido)
Ejecutar:
python3 leer_todo.py
3.3. Leer línea por línea
nano leer_lineas.py
Contenido:
with open("datos.txt", "r") as f:
for linea in f:
print("Usuario:", linea.strip())
3.4. Escribir en un fichero nuevo
nano escribir.py
Contenido:
with open("salida.txt", "w") as f:
f.write("Primer log generado.\n")
f.write("Este archivo ha sido creado por Python.\n")
Ejecutar y comprobar:
python3 escribir.py
cat salida.txt
3.5. Añadir líneas (modo append)
nano anadir.py
Contenido:
with open("salida.txt", "a") as f:
f.write("Nueva entrada añadida.\n")
Ejecuta varias veces y observa cómo crece el archivo.
3.6. Procesar datos de un fichero
Crear:
nano procesar.py
Contenido:
usuarios = []
with open("datos.txt", "r") as f:
for linea in f:
usuarios.append(linea.strip())
print("Usuarios cargados:", usuarios)
print("Total:", len(usuarios))
3.7. Generar un log profesional (mini)
nano log_simple.py
Contenido:
import datetime
def escribir_log(mensaje):
fecha = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
linea = f"[{fecha}] {mensaje}\n"
with open("actividad.log", "a") as f:
f.write(linea)
escribir_log("Inicio del script")
escribir_log("Proceso completado con éxito")
Ejecuta varias veces y revisa actividad.log.
3.8. Listar archivos y rutas
nano rutas.py
Contenido:
import os
print("Directorio actual:", os.getcwd())
print("Archivos aquí:")
for nombre in os.listdir():
print("-", nombre)
4. Checklist del Día 5
- Has leído un fichero completo
- Has leído línea por línea
- Has escrito un fichero usando
"w" - Has añadido contenido con
"a" - Has procesado datos desde un fichero
- Has creado un mini log con timestamp
- Has usado funciones del módulo
os
5. Errores frecuentes
| Problema | Solución |
|---|---|
| Archivo no encontrado | Verifica ruta y nombres exactos |
| Problemas con UTF-8 | Añadir encoding="utf-8" si es necesario |
| Sobrescribir sin querer un archivo | Recuerda que "w" borra lo anterior |
PermissionError | Ejecutar desde un directorio donde tengas permisos |
| Leer líneas con saltos extraños | Usar .strip() |
6. Ejercicio opcional (con solución aparte)
Crear un script llamado analizador_logs.py que:
- Lea el archivo
actividad.log - Cuente cuántas entradas hay
- Busque si aparece la palabra “error” (ignorando mayúsculas/minúsculas)
- Muestre un resumen final, por ejemplo:
Entradas totales: 12
Entradas con 'error': 3
Última línea del log: [2025-02-10 20:33:19] Inicio del sistema
Nota: El archivo actividad.log se genera automáticamente cuando ejecutas el script log_simple.py en este mismo día. Puedes abrirlo con cualquier editor para ver su contenido antes de analizarlo.
La solución estará en:Soluciones propuestas
7. Día 5 completado
Ya sabes trabajar con ficheros, logs, rutas y lectura/escritura de datos.
Esto te da poder para automatizar tareas reales como:
- procesar logs
- generar reportes
- leer listas de usuarios/servidores
- crear pequeños sistemas de auditoría
En el Día 6, veremos librerías esenciales para sysadmin/devops, como os, sys, json, subprocess.
