devseniorlabpython/hardware-shop

Añadir Funcionalidad para Exportar Inventario a Formato CSV

オープン

#6 opened on 2025/08/08

 (0 件のコメント) (0 件のリアクション) (1 人の担当者)Python (5 件のフォーク)auto 404
enhancementgood first issue

Repository metrics

Stars
 (0 個のスター)
PR merge metrics
 (PR metrics pending)

説明

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")

コントリビューターガイド