devseniorlabpython/hardware-shop

Añadir Funcionalidad para Exportar Inventario a Formato CSV

开放

#6 创建于 2025年8月8日

 (0 条评论) (0 个反应) (1 位负责人)Python (5 个派生)auto 404
enhancementgood first issue

仓库指标

星标
 (0 个星标)
PR 合并指标
 (PR 指标待抓取)

描述

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

贡献者指南