devseniorlabpython/hardware-shop
Añadir Funcionalidad para Exportar Inventario a Formato CSV
オープン
#6 opened on 2025/08/08
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:
-
Añadir la Opción al Menú (
main.py):- Abre
main.pyy añade una nueva opción al menú en la funciónmostrar_menu(). Por ejemplo: "Exportar inventario a CSV". Recuerda ajustar la numeración de las opciones siguientes.
- Abre
-
Implementar la Lógica de Exportación (
main.py):- Añade un nuevo
elifen la funciónmain()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
csval principio demain.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.csvy establecenewline=''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']) usandowriter.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().
- Añade un nuevo
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")