我正在尝试创建一个python脚本,该脚本检查当前是否在几个linux目录中创建了一个文件,如果创建了这些文件,请向通讯组发送一封电子邮件,其中包含所创建文件的名称。如果不是,发送一封电子邮件,说明文件不是今天创建的。我有麻烦,我目前的代码能够提取实际的文件名/日期,并发送到我的电子邮件报告
这是一个运行python2.7.5的linux服务器
import datetime as dt
import os
import smtplib
today = dt.datetime.now().date()
for file in os.listdir('/gma/cache/completed'):
filetime = dt.datetime.fromtimestamp(
os.path.getctime('/gma/cache/completed' + file))
print(filetime)
if filetime.date() == today:
SERVER = 'smtp.gmail.com'
FROM = 'llara@abc.com'
TO = ['generic@gmail.com']
SUBJECT = 'gma reporting.. '
TEXT = ''
message = """From: %s\r\nTo: %s\r\nSubject: %s\r\n\
%s
""" % (FROM, ", ".join(TO), SUBJECT, TEXT)
server = smtplib.SMTP(SERVER)
server.login('user', "PASSWORD")
server.sendmail(FROM, TO, message)
server.quit()
我目前正在等待批准在沙盒环境中测试这个,我想得到一些反馈
查看this post。使用
os.path.getmtime
会给您修改的时间,但是在Linux上使用os.path.getctime
似乎不起作用看起来您可能有一个错误:
您的
os.path.getctime(...
工件正在将file
添加到没有文件分隔符的路径中。考虑使用os.path.join
,而不是简单的字符串串联一些小的反馈:我会考虑在你的函数之外分解你的常量定义。例如,在模块中导入的正下方声明
SERVER = 'smtp.gmail.com'
考虑对smtp呼叫使用
with
。所以应该是这样的:我也会考虑使用Python的email module,尽管对于一些简单的东西来说可能有些过分
一些关于一个更具“Pythonic”组织的高层反馈:
我会将您的代码放在一个名为
main
(或任何您认为最有用的函数)的函数中,然后在底部创建一个if __name__ == '__main__':
块,然后调用main
函数。当您的脚本/程序不可避免地增长时,这将允许其他模块从这个模块导入,而无需运行所有代码最后,我强烈地鼓励在服务器上使用虚拟环境。可能这是一个RedHat服务器(因为它运行的是python2.7.5)。我在使用系统的Python安装时遇到了不好的情况——只要需要安装一个包,您就可以很快发现自己的系统坏了Here's a handy guide关于Python中的虚拟环境
相关问题 更多 >
编程相关推荐