使用Python在特定目录中监控文件变化并发送邮件通知
我想写一个程序,它会在一个特定的文件夹里查找文件。如果发现有新文件,就应该发送一封通知邮件。
我已经准备了一个脚本,可以在文件夹里查找新文件,它会把新文件的通知打印到控制台上。但现在我希望能通过邮件收到通知,一旦有新文件到达。有人能帮忙吗?
import os, time
def run():
path_to_watch = "//D$:/testfolder/"
print "watching: " + path_to_watch
before = dict ([(f, None) for f in os.listdir (path_to_watch)])
while 1:
after = dict ([(f, None) for f in os.listdir (path_to_watch)])
added = [f for f in after if not f in before]
removed = [f for f in before if not f in after]
if added: print "Added: ", ", ".join (added)
if removed: print "Removed: ", ", ".join (removed)
before = after
time.sleep (10)
if __name__ == "__main__":
print run()
2 个回答
0
好的,在这种情况下,我找到了自己的解决办法。可能这对有类似任务的人会有所帮助。
import os, time, smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
path_to_watch = "//networkpath/test/filetest"
print "watching: " + path_to_watch
before = dict ([(f, None) for f in os.listdir (path_to_watch)])
while 1:
after = dict ([(f, None) for f in os.listdir (path_to_watch)])
added = [f for f in after if not f in before]
removed = [f for f in before if not f in after]
if removed: print "Removed: ", ", ".join (removed)
if added:
print "Added: ", ", ".join (added)
me = "me@test.de"
you = "you@test.de"
msg = MIMEMultipart('alternative')
msg['Subject'] = "New file has approached."
msg['From'] = me
msg['To'] = you
text = "New file has approached in:\n\\\networkpath\test\filetest"
part1 = MIMEText(text, 'plain')
msg.attach(part1)
s = smtplib.SMTP('smtp.test.com')
s.sendmail(me, you, msg.as_string())
s.quit()
time.sleep (10)
before = after
祝你玩得开心!
1
如果你已经设置好了一个SMTP邮件服务器(我假设你有一个邮件系统!),那么这件事非常简单。总共大约只需要10行代码。这里有一个Python的例子。
如果你遇到任何问题,我们需要更多的信息来进一步帮助你。例如,你使用的是什么邮件系统等等。