Gestión de Listas de Compra en Python con Archivos JSON

abrahanmaigua

Abrahan Maigua

Posted on June 7, 2024

Gestión de Listas de Compra en Python con Archivos JSON

En este artículo, exploraremos cómo utilizar Python para gestionar listas de compra utilizando archivos JSON. Utilizaremos las capacidades de Python para crear, listar, actualizar, eliminar, guardar y cargar listas de compra en un formato JSON, lo que proporciona una forma eficiente y estructurada de mantener y modificar nuestras listas de compras.

Introducción

Las listas de compra son una herramienta esencial para organizar lo que necesitamos comprar. En lugar de gestionarlas manualmente, podemos utilizar Python para automatizar este proceso utilizando archivos JSON como almacenamiento persistente. A continuación, crearemos una clase en Python llamada ListaCompra que nos permitirá realizar todas las operaciones necesarias con nuestras listas de compra.

Creación de la Clase ListaCompra

import os
import json

class ListaCompra:
    def __init__(self):
        self.listas = {}

    def crear(self, lista: list, name: str, tipo: int = 0):
        """
        Crea una nueva lista de compra.

        Args:
        - lista (list): Elementos de la lista de compra.
        - name (str): Nombre de la lista.
        - tipo (int, opcional): Tipo de lista (por defecto 0).
        """
        if name in self.listas:
            print(f"La lista '{name}' ya existe.")
        else:
            if tipo == 0:
                self.listas[name] = lista
        return self.listas

    def count(self):
        """
        Retorna la cantidad de listas de compras creadas.
        """
        return len(self.listas.keys())

    def listar(self):
        """
        Lista todas las listas de compras con sus elementos.
        """
        for k, v in self.listas.items():
            print(k)
            for item in v:
                if isinstance(item, list):
                    item = ' '.join(item)
                print(f"  - {item}")
            print('')

    def actualizar(self, name, content):
        """
        Actualiza una lista de compra existente añadiendo un nuevo elemento.

        Args:
        - name (str): Nombre de la lista a actualizar.
        - content: Elemento a añadir a la lista.
        """
        if name in self.listas:
            self.listas[name].append(content)
        else:
            print(f"La lista '{name}' no existe.")
        return self.listas.get(name, [])

    def eliminar(self, name):
        """
        Elimina una lista de compra existente.

        Args:
        - name (str): Nombre de la lista a eliminar.
        """
        if name in self.listas:
            del(self.listas[name])
        else:
            print(f"La lista '{name}' no existe.")

    def guardar(self):
        """
        Guarda las listas de compra en un archivo JSON llamado 'lista_compra.json'.
        """
        with open('lista_compra.json', 'w') as file:
            json.dump([{k: v} for k,v in self.listas.items()], file, indent=4)

    def cargar(self):
        """
        Carga las listas de compra desde el archivo JSON 'lista_compra.json'.
        """
        if os.path.exists('lista_compra.json'):
            with open('lista_compra.json', 'r') as file:
                data = json.load(file)
                for i, lista in enumerate(data):
                    self.listas[f"lista_{i+1}"] = lista["compras"]
        else:
            print("El archivo 'lista_compra.json' no existe.")
Enter fullscreen mode Exit fullscreen mode

Explicación de la Clase ListaCompra

Inicialización y Atributos

  • __init__(self): Inicializa la clase con un diccionario vacío self.listas donde se almacenarán las listas de compras.

Métodos de la Clase

  • crear(self, lista, name, tipo=0): Crea una nueva lista de compra con un nombre único name y una lista de elementos lista. El parámetro opcional tipo permite especificar el tipo de lista.

  • count(self): Retorna el número de listas de compras creadas hasta el momento.

  • listar(self): Lista todas las listas de compras existentes con sus respectivos elementos.

  • actualizar(self, name, content): Actualiza una lista de compra existente añadiendo un nuevo elemento content.

  • eliminar(self, name): Elimina una lista de compra existente según su nombre name.

  • guardar(self): Guarda todas las listas de compras en un archivo JSON llamado lista_compra.json.

  • cargar(self): Carga las listas de compras desde el archivo JSON lista_compra.json al diccionario self.listas.

Uso de la Clase ListaCompra

os.system('clear')
app = ListaCompra()
app.crear(['patatas', 'arroz', 'potato'], 'comprar')
app.crear(['galletas'], 'deseos')

app.guardar()
app.cargar()
Enter fullscreen mode Exit fullscreen mode

Explicación del Uso

  • os.system('clear'): Limpia la consola antes de ejecutar la aplicación para una mejor visualización.

  • Creación de una instancia app de la clase ListaCompra.

  • Creación de dos listas de compra utilizando el método crear.

  • Guardado de las listas de compra en el archivo JSON utilizando el método guardar.

  • Carga de las listas de compra desde el archivo JSON utilizando el método cargar.

Conclusión

En este artículo, hemos visto cómo implementar una clase en Python para gestionar listas de compra utilizando archivos JSON como almacenamiento persistente. Esta técnica no solo simplifica la gestión de datos, sino que también ofrece una forma estructurada y eficiente de mantener nuestras listas de compras actualizadas y accesibles desde cualquier lugar.

¡Espero que este artículo te haya proporcionado una buena introducción al manejo de datos estructurados con Python y archivos JSON!


Este esquema te proporciona una guía detallada para escribir un artículo de blog sobre cómo gestionar listas de compra en Python utilizando archivos JSON. Puedes expandir cada sección según sea necesario y añadir ejemplos adicionales o detalles técnicos según el público objetivo del artículo.

💖 💪 🙅 🚩
abrahanmaigua
Abrahan Maigua

Posted on June 7, 2024

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related