Capítulo 9: Manejo de Archivos
🧭 Navegación:
- Anterior: Funciones y Módulos
- Siguiente: Manejo de Errores
¡Bienvenido al departamento de archivos y documentación de nuestro almacén digital! El manejo de archivos es como tener un sistema de archivo empresarial donde podemos leer, escribir, organizar y procesar documentos de manera automática.
📁 ¿Qué es el manejo de archivos?
El manejo de archivos es la capacidad de interactuar con archivos del sistema: leer información de documentos existentes, crear nuevos archivos, y procesar grandes volúmenes de datos almacenados. Es como tener un asistente administrativo digital que puede:
- Leer informes y extraer información importante
- Generar documentos automáticamente
- Procesar datos masivos de hojas de cálculo
- Crear respaldos de información crítica
- Organizar archivos según criterios específicos
🏢 Analogía del almacén: El departamento de documentación
Imagina que nuestro almacén tiene un departamento de documentación donde:
- Los archivos de texto son como documentos y reportes escritos
- Los archivos CSV son como hojas de cálculo con datos tabulares
- Los archivos JSON son como formularios estructurados con información organizada
- Python es nuestro asistente administrativo que puede leer, escribir y procesar todos estos documentos
- Los métodos de archivo son las diferentes herramientas de oficina (lectores, impresoras, organizadores)
📄 Tipos de archivos en el almacén
📝 Archivos de texto (.txt)
- Uso: Reportes, logs, notas, documentación
- Características: Fáciles de leer y escribir, universales
- Ejemplo práctico: Reportes diarios de inventario
# Ejemplo: Generar reporte diario de ventas
reporte_ventas = """
=== REPORTE DIARIO DE VENTAS ===
Fecha: 2024-01-15
Total vendido: $15,750.00
Productos más vendidos:
1. Laptop Gaming - 12 unidades
2. Mouse Inalámbrico - 25 unidades
3. Teclado Mecánico - 8 unidades
Observaciones:
- Incremento del 15% respecto a ayer
- Stock bajo en laptops gaming
"""
with open("reporte_ventas_2024_01_15.txt", "w", encoding="utf-8") as archivo:
archivo.write(reporte_ventas)
📊 Archivos CSV (.csv)
- Uso: Inventarios, listas de precios, datos de ventas
- Características: Estructura tabular, compatible con Excel
- Ejemplo práctico: Inventario de productos
import csv
# Ejemplo: Generar inventario en formato CSV
inventario_productos = [
["Codigo", "Nombre", "Categoria", "Precio", "Stock"],
["LAP001", "Laptop Gaming Pro", "Computadoras", 1299.99, 15],
["MOU001", "Mouse Inalámbrico", "Accesorios", 29.99, 45],
["TEC001", "Teclado Mecánico", "Accesorios", 89.99, 23],
["MON001", "Monitor 4K", "Pantallas", 399.99, 8]
]
with open("inventario_productos.csv", "w", newline="", encoding="utf-8") as archivo:
escritor = csv.writer(archivo)
escritor.writerows(inventario_productos)
📋 Archivos JSON (.json)
- Uso: Configuraciones, APIs, datos estructurados
- Características: Formato web, estructura anidada
- Ejemplo práctico: Configuración del sistema
import json
# Ejemplo: Configuración del sistema de almacén
configuracion_sistema = {
"almacen": {
"nombre": "TechStore Central",
"ubicacion": "Ciudad de México",
"capacidad_maxima": 10000
},
"configuracion_ventas": {
"impuesto_default": 0.16,
"descuento_maximo": 0.30,
"moneda": "MXN"
},
"alertas": {
"stock_minimo": 5,
"notificar_email": True,
"email_admin": "admin@techstore.com"
}
}
with open("configuracion_almacen.json", "w", encoding="utf-8") as archivo:
json.dump(configuracion_sistema, archivo, indent=2, ensure_ascii=False)
🖄️ Flujo de trabajo con archivos
1. Planificación 📋
- ¿Qué tipo de archivo necesito?
- ¿Cómo estructuraré la información?
- ¿El archivo ya existe o lo crearé nuevo?
2. Apertura 🔓
# Modos de apertura de archivos
"r" # Lectura (archivo debe existir)
"w" # Escritura (sobrescribe si existe)
"a" # Añadir al final (append)
"r+" # Lectura y escritura
"x" # Creación exclusiva (falla si existe)
3. Procesamiento ⚙️
- Leer contenido existente
- Procesar y transformar datos
- Generar nuevo contenido
4. Cierre seguro 🔒
# Siempre usar context managers
with open("archivo.txt", "r") as f:
contenido = f.read()
# El archivo se cierra automáticamente
🚀 Casos de uso en el almacén
📋 Generación de reportes automáticos
def generar_reporte_inventario_bajo():
"""Genera reporte de productos con stock bajo"""
productos_bajo_stock = []
# Leer inventario actual
with open("inventario.csv", "r") as f:
reader = csv.DictReader(f)
for producto in reader:
if int(producto["Stock"]) < 10:
productos_bajo_stock.append(producto)
# Generar reporte
with open("alerta_stock_bajo.txt", "w") as f:
f.write("\n=== ALERTA: PRODUCTOS CON STOCK BAJO ===\n")
for producto in productos_bajo_stock:
f.write(f"- {producto['Nombre']}: {producto['Stock']} unidades\n")
return len(productos_bajo_stock)
📊 Procesamiento de datos de ventas
def analizar_ventas_mensuales():
"""Analiza las ventas del mes y genera estadísticas"""
ventas = []
# Leer datos de ventas
with open("ventas_enero.csv", "r") as f:
reader = csv.DictReader(f)
ventas = list(reader)
# Procesar estadísticas
total_ventas = sum(float(venta["Total"]) for venta in ventas)
promedio_diario = total_ventas / 31 # enero tiene 31 días
# Guardar análisis
analisis = {
"periodo": "Enero 2024",
"total_ventas": total_ventas,
"promedio_diario": promedio_diario,
"numero_transacciones": len(ventas)
}
with open("analisis_enero_2024.json", "w") as f:
json.dump(analisis, f, indent=2)
return analisis
📋 Sistema de respaldos automáticos
import shutil
from datetime import datetime
def crear_respaldo_diario():
"""Crea respaldo diario de archivos importantes"""
fecha_hoy = datetime.now().strftime("%Y%m%d")
archivos_importantes = [
"inventario.csv",
"configuracion_almacen.json",
"ventas_del_dia.csv"
]
# Crear directorio de respaldo
directorio_respaldo = f"respaldos/respaldo_{fecha_hoy}/"
os.makedirs(directorio_respaldo, exist_ok=True)
# Copiar archivos importantes
for archivo in archivos_importantes:
if os.path.exists(archivo):
shutil.copy2(archivo, directorio_respaldo)
print(f"Respaldo creado en: {directorio_respaldo}")
🎯 Contenido de este capítulo
En este capítulo construiremos nuestro departamento de documentación digital aprendiendo:
📄 Leer y escribir archivos de texto
- Operaciones básicas con archivos
- Context managers y buenas prácticas
- Manejo de codificación (UTF-8, ASCII)
- Procesamiento de logs y reportes
📊 Trabajar con CSV
- Módulo
csv
de Python - Lectura y escritura de datos tabulares
- Procesamiento de inventarios y ventas
- Integración con Excel y hojas de cálculo
📋 Trabajar con JSON
- Formato JSON para datos estructurados
- Serialización y deserialización
- Configuraciones y APIs
- Intercambio de datos entre sistemas
🛡️ Mejores prácticas para manejo de archivos
✅ Siempre usar context managers
# ✅ Correcto
with open("archivo.txt", "r") as f:
contenido = f.read()
# El archivo se cierra automáticamente
# ❌ Incorrecto
f = open("archivo.txt", "r")
contenido = f.read()
# ¿Qué pasa si ocurre un error antes de cerrar?
✅ Especificar codificación
# ✅ Siempre especifica encoding
with open("archivo.txt", "r", encoding="utf-8") as f:
contenido = f.read()
✅ Manejar errores apropiadamente
try:
with open("archivo_importante.txt", "r") as f:
datos = f.read()
except FileNotFoundError:
print("El archivo no existe, creando uno nuevo...")
with open("archivo_importante.txt", "w") as f:
f.write("Contenido inicial")
except PermissionError:
print("No tienes permisos para acceder al archivo")
✅ Validar datos antes de procesar
def procesar_archivo_ventas(nombre_archivo):
"""Procesa archivo de ventas con validaciones"""
# Verificar que el archivo existe
if not os.path.exists(nombre_archivo):
raise FileNotFoundError(f"No se encuentra el archivo: {nombre_archivo}")
# Verificar que no está vacío
if os.path.getsize(nombre_archivo) == 0:
raise ValueError("El archivo está vacío")
# Procesar contenido
with open(nombre_archivo, "r", encoding="utf-8") as f:
# ... procesamiento seguro
pass
🚀 Lo que lograrás en este capítulo
Al finalizar este capítulo, tendrás:
- ✅ Dominio de archivos de texto: Leer, escribir y procesar documentos
- ✅ Manejo profesional de CSV: Procesar datos tabulares como Excel
- ✅ Competencia en JSON: Trabajar con APIs y configuraciones
- ✅ Automatización de reportes: Generar documentos automáticamente
- ✅ Sistema de respaldos: Proteger información importante
- ✅ Procesamiento masivo: Manejar grandes volúmenes de datos
🎯 Preparando tu oficina digital
Antes de comenzar, ten en cuenta que el manejo de archivos es fundamental para la automatización:
- Entrada de datos: Los archivos son la principal fuente de información
- Salida de resultados: Generar reportes y documentos finales
- Persistencia: Guardar información entre ejecuciones del programa
- Integración: Comunicarse con otros sistemas y herramientas
¡Comencemos a construir tu departamento de documentación digital que automatizará todo el papeleo de tu almacén!
🧭 Navegación:
- Anterior: Funciones y Módulos
- Siguiente: Manejo de Errores
En este capítulo: