es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No hay suficientes valores para desempaquetar (se esperaban 3, se obtuvo 1)

Estoy atascado con el siguiente problema y no sé cómo resolverlo. Por favor, ayuda. Sería bueno si también pudieras explicar cómo lo hiciste.

import csv, smtplib, ssl

message = """Subject: Tu nota

Hola {name}, tu nota es {grade}"""
from_address = "michael@gmail.com"
password = input("Escribe tu contraseña y presiona enter: ")

context = ssl.create_default_context()
with smtplib.SMTP_SSL("smtp.gmail.com", 465, context=context) as server:
     server.login(from_address, password)
     with open("contacts_file.csv") as file:
         reader = csv.reader(file)
         next(reader)  # Saltar la fila de encabezado
         for name, email, grade in reader:
             server.sendmail(
                 from_address,
                 email,
                 message.format(name=name,grade=grade),
             )

EROR


“` python
ValueError Traceback (most recent call last)
/var/folders/q8/qn3d11d90fbbz0j6kllhpn9h0000gn/T/ipykernel_34629/2824055323.py in <module>
13 reader = csv.reader(file)
14 next(reader) # Saltar la fila de encabezado
—> 15 for name, email, grade in reader:
16 server.sendmail(
17 from_address,

ValueError: no hay suficientes valores para desempaquetar (se esperaban 3, se obtuvo 1)
“`

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que hay un error en el código relacionado con el archivo CSV. Específicamente, el error es “ValueError: no hay suficientes valores para desempaquetar (se esperaban 3, se obtuvo 1)”. Esto significa que al intentar desempaquetar los valores del lector CSV, se esperan 3 valores (nombre, correo electrónico y calificación), pero solo se obtiene 1 valor. Esto podría indicar que hay un problema con el formato del archivo CSV o que faltan valores en el archivo.

    Para resolver este problema, puedes verificar el archivo CSV y asegurarte de que cada fila tenga todos los valores necesarios (nombre, correo electrónico y calificación). Además, puedes agregar un manejo de errores al código para manejar casos en los que falten valores. Por ejemplo, podrías agregar una declaración “if” para verificar si la longitud de la fila es igual a 3 antes de intentar desempaquetar los valores:

    for row in reader:
        if len(row) == 3:
            name, email, grade = row
            server.sendmail(from_address, email, message.format(name=name, grade=grade))
        else:
            print(f"Saltando fila con valores faltantes: {row}")
    

    Este código verificará si cada fila tiene 3 valores antes de intentar desempaquetar los valores. Si una fila tiene menos de 3 valores, se omitirá esa fila e imprimirá un mensaje que indique que la fila tiene valores faltantes.

    ¡Espero que esto ayude! Avísame si tienes alguna otra pregunta.

Comments are closed.