嗨,我是python的初学者, 试图解决循环,找不到任何好的答案。似乎没有任何作用, 检查光盘c:中的文件有两个循环,在chrome.exe被发现后,“ for”循环正在打印文件的infite路径,应该将其打印一次,然后进入子进程。如何终止循环?我在几个地方都使用break,但是它终止了代码
谢谢
IsError
答案 0 :(得分:0)
如果您也想突破外部循环,则需要标记一个布尔值。
import sys
import subprocess
found = False #haven't found it yet
for root, dirs, files in os.walk(r'c:\\'):
for name in files:
if name == 'chrome.exe':
found = True #found it
pathFile = print(os.path.abspath(os.path.join(root, name)))
subprocess.call([sys.executable, 'mail1.py'])
break #don't look for anymore files
if found:
break #don't continue the walk
sys.exit()
答案 1 :(得分:0)
似乎是由于下一行中的子进程而出现问题。而且它一直循环播放
现在我在模块导入中遇到了另一个问题,该错误是: AttributeError:模块“ EmailSender”没有属性“ senEm”
我已删除.pyc文件
EmailSender.py
import smtplib
import Config
import sys
def senEm():
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.login(Config.emailAdr, Config.passWord)
message = 'Subject: {}\n\n{}'.format(Config.subject, Config.msg)
server.sendmail(Config.emailAdr, Config.emailAdr, message)
server.quit()
print('Email sent')
sys.exit()
Check.py
import os
import sys
import EmailSender
foundFile = 'chrome.exe'
for root, dirs, files in os.walk('c:\\'):
for file in files:
if file == foundFile:
pathFile = print(os.path.join(root,file))
EmailSender.senEm()
sys.exit()
那怎么可能,我已重命名文件,但仍无法正常工作 第二个问题是我无法调用另一个文件或文件中的函数