devseniorlabpython / devseniorlabpython/hardware-shop

Añadir Funcionalidad para Exportar Inventario a Formato CSV

Open
#6 0 comments 0 reactions 1 assignee Assigned to @carres1995 View on GitHub
enhancement good first issue
Dominant language
Python
Stars
0
Forks
4
PR merge metrics
No merged PRs in 30d

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:**
```python
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

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.