我正在尝试编写一个脚本来查找文件并且脚本运行正常但运行时好像永远无法找到它一样?但我知道这个文件就在那里。当我只想发送一封电子邮件而不是多封电子邮件时,它会运行并发送多封电子邮件。 (由于显而易见的原因,我删除了我的电子邮件和密码,但空白字符串是我的电子邮件地址/密码,我知道这一点。
这是我的代码:
for path, dirs, files in os.walk(bureau):
for filename in files:
filename_no_ext, ext = os.path.splitext(filename)
if ext.lower() == '.xls':
num = filename.rsplit(" ")
jnum = num[0]
if num[0] in jobnums:
master = ' '.join([jnum, "Master Box File List.xls"])
for jobfolder in os.listdir(bureau):
if jobfolder.startswith(jnum):
if os.path.exists(master):
print master
else:
fromaddr = ""
toaddr = ""
max_attempts = 5
login_success = False
for i in range(max_attempts):
try:
msg = MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = toaddr
msg['Subject'] = "Scripting Email"
body = "This email is an automatic email part of a Python training excersise"
msg.attach(MIMEText(body, 'plain'))
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(fromaddr, "")
text = msg.as_string()
print "Signed In To Mailbox."
login_success = True
break
except:
print "Can't Sign In To Mailbox. Trying Again...."
time.sleep(0.5)
continue
if login_success:
server.sendmail(fromaddr, toaddr, text)
server.quit()
print "Email Sent."
else:
print "Can't Sign In To Mailbox."
我不期待这是一个巨大的错误,只是我看不到的小事,为人欢呼。
答案 0 :(得分:0)
我会猜测你实际上不想做什么
for jobfolder in os.listdir(bureau):
看起来bureau
是您的顶级目录。它永远不会改变代码。因此,对于walk中的每个文件,您都在顶级目录中运行此for循环。你实际上试图循环什么?如果您只是检查树中的每个文件,那么此处不需要另一个嵌套循环,os.walk
将已经下降整个树。