devseniorlabpython/hardware-shop

Añadir Funcionalidad para Exportar Inventario a Formato CSV

Offen

#6 geöffnet am 08.08.2025

 (0 Kommentare) (0 Reaktionen) (1 zugewiesene Person)Python (5 Forks)auto 404
enhancementgood first issue

Repository-Metriken

Stars
 (0 Sterne)
PR-Merge-Metriken
 (PR-Metriken ausstehend)

Beschreibung

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