【发布时间】:2020-01-30 09:34:15
【问题描述】:
我正在构建一个 URL 检查器,它会找到我给它的损坏的 URL,然后将结果发送给我的电子邮件。这是我的最终结果。我必须在我的 for 循环中创建另一个要写入的文件,然后发送该文件。它可以工作,但是有没有更简洁的方法可以做到这一点,并且没有两个 .txt 文件,并且不会覆盖原始 testurls.txt 中的内容?
import requests
import smtplib
from email.message import EmailMessage
with open ("testurls.txt", "r") as txt_file:
for urls in txt_file:
request = requests.get(urls)
try:
request.raise_for_status()
except Exception as error:
error = 'There was a problem: %s' % (error)
with open("listurls.txt", "r+") as f:
f.truncate(0) #Deletes the files pre existing data
f.writelines(error+ "\n") #Writes the new data
f.close()
else:
pass
with open("listurls.txt", "r") as file_to_send:
msg = EmailMessage()
msg.set_content(file_to_send.read())
msg['Subject'] = "Here are the list of URLs that don't work"
msg['From'] = 'andrewtalbotprogramming@gmail.com'
msg['To'] = 'andrewtalbotprogramming@gmail.com'
s = smtplib.SMTP_SSL(host='smtp.gmail.com', port=465)
print("Enter Your Password To Continue")
password = input('')
s.login('andrewtalbotprogramming@gmail.com',password)
s.send_message(msg)
s.quit()
【问题讨论】:
标签: python testing automated-tests