Уведомление по электронной почте об изменении файла в определенном каталоге с Python - PullRequest
2 голосов
/ 21 октября 2010

Я хотел бы написать скрипт для функции, которая ищет файлы в определенном каталоге, если есть новые файлы, он должен отправить уведомление по электронной почте.

Я уже подготовил скрипт, который ищет новыефайлы в каталоге, он записывает уведомление о новом файле в консоль.Но теперь я хотел бы получать уведомления по электронной почте, как только появился новый файл.Может ли кто-нибудь помочь?

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 ]

1 голос
/ 21 октября 2010

Это очень просто, если у вас настроен почтовый сервер SMTP (я предполагаю, что у вас есть почтовая система!). Всего вам потребуется около 10 строк кода. Вот Пример Python .

Если у вас возникнут проблемы, нам потребуется дополнительная информация, чтобы помочь вам в дальнейшем. Например, какую почтовую систему вы используете e.t.c.

0 голосов
/ 03 ноября 2010

OKI, в этом случае я разработал свое собственное решение. Вероятно, это может помочь кому-то с подобной задачей решить.

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

Веселись!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...