【发布时间】:2022-01-05 17:37:45
【问题描述】:
我遇到了以下问题,我不知道如何解决它。请帮忙,如果您也能解释一下您是如何做到的,那就太好了。
import csv, smtplib, ssl
message = """Subject: Your grade
Hi {name}, your grade is {grade}"""
from_address = "michael@gmail.com"
password = input("Type your password and press 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) # Skip header row
for name, email, grade in reader:
server.sendmail(
from_address,
email,
message.format(name=name,grade=grade),
)
错误
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) # Skip header row
---> 15 for name, email, grade in reader:
16 server.sendmail(
17 from_address,
ValueError: not enough values to unpack (expected 3, got 1)
【问题讨论】:
-
文件长什么样?错误是告诉您该行中只有一个字段。
-
姓名;电子邮件;等级 michael;y@gmail.com;2 zas;s@gmail.com;32 dasdas;btnike888@vireonidae.com;32 dasdas;ym2000@gmail.com;312
-
您是在读取标题后立即收到错误,还是在读取最后一行后,或介于两者之间?我怀疑你的文件中有一个空行。
-
需要设置分隔符
reader = csv.reader(file, delimiter=';')。 csv 文件的默认分隔符是逗号,而不是分号。
标签: python python-3.x csv ssl smtplib