devseniorlabpython / devseniorlabpython/hardware-shop

Añadir Funcionalidad para Exportar Inventario a Formato CSV

未关闭
#6 0 条评论 0 个 reaction 已指派 1 人 已指派给 @carres1995 在 GitHub 查看
enhancement good first issue
主要语言
Python
星标
0
派生
4
PR 合并指标
30 天内没有已合并 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:**
```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")

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。