devseniorlabpython/hardware-shop

Añadir Funcionalidad para Exportar Inventario a Formato CSV

Open

#6 opened on Aug 8, 2025

 (0 comments) (0 reactions) (1 assignee)Python (5 forks)auto 404
enhancementgood first issue

Repository metrics

Stars
 (0 stars)
PR merge metrics
 (PR metrics pending)

Description

Además de exportar a .txt, es muy útil poder exportar los datos a formato CSV (Valores Separados por Comas), ya que es un estándar universal que puede ser abierto por hojas de cálculo como Excel, Google Sheets o LibreOffice Calc.

Tu Misión:

Añadir una nueva opción al menú para exportar el inventario completo a un archivo .csv.

Tareas Específicas:

  1. Añadir la Opción al Menú (main.py):

    • Abre main.py y añade una nueva opción al menú en la función mostrar_menu(). Por ejemplo: "Exportar inventario a CSV". Recuerda ajustar la numeración de las opciones siguientes.
  2. Implementar la Lógica de Exportación (main.py):

    • Añade un nuevo elif en la función main() para manejar la nueva opción.
    • Dentro de este bloque, pide al usuario el nombre que desea para el archivo (sin la extensión).
    • Importa el módulo csv al principio de main.py: import csv.
    • Obtén todos los productos usando repo.get_all().
    • Usa un bloque with open(...) para crear y abrir el archivo en modo escritura ('w'). Asegúrate de que el nombre del archivo termine en .csv y establece newline='' para un manejo correcto de las líneas en Windows.
    • Crea un csv.writer.
    • Escribir Encabezados: Escribe la primera fila del archivo con los nombres de las columnas (ej. ['ID', 'Nombre', 'Precio', 'Stock']) usando writer.writerow().
    • Escribir Datos: Itera sobre tu lista de productos. Por cada diccionario de producto, extrae los valores en el orden correcto y escríbelos en el archivo usando writer.writerow().

Ejemplo de código para la escritura del CSV:

import csv

# ... dentro del elif ...
productos = repo.get_all()
if productos:
    # Extraer encabezados del primer producto
    encabezados = list(productos[0].keys())
    
    with open(f"{nombre_archivo}.csv", 'w', newline='', encoding='utf-8') as f:
        writer = csv.writer(f)
        writer.writerow(encabezados)  # Escribir la fila de encabezados
        
        # Escribir los datos de cada producto
        for producto in productos:
            writer.writerow(list(producto.values()))
    
    print(f"✅ Inventario exportado a {nombre_archivo}.csv")

Contributor guide