介绍
小编给大家分享一下Python如何读取指定日期邮件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
Python是什么意思
Python是一种跨平台的,具有解释性,编译性,互动性和面向对象的脚本语言,其最初的设计是用于编写自动化脚本,随着版本的不断更新和新功能的添加,常用于用于开发独立的项目和大型项目。
背景:9月份有部分数据缺失,这部分数据在邮箱里,需要重新拉取,但是每天几百封邮件,总共有6、7万封邮件,使用stat()和retr()结合遍历很
<强>耗时强>
<>强基于如上背景,初始大致思路为:强>
使用二分法获取到需要恢复数据时间范围内的中间一个值,也就是第几封邮件,然后分两头遍历,
读取到所有需要的邮件
算法函数:
<强> 1,获取到邮件的时间,由于可能收到格林威治时间邮件,所以这里做了相应的处理强>
def getTimeStamp (cn): 消息才能=mailServer.retr (cn) [1] mail 才能=,email.message_from_bytes (& # 39; \ n # 39; .encode (& # 39; utf - 8 # 39;) . join(消息)) 日期才能=email.header.decode_header (mail.get(& # 39;日期# 39;)) utcstr 才能=,日期[0][0].replace (& # 39; + 0 # 39; & # 39; & # 39;) global utcdatetime才能 尝试才能: ,,,utcdatetime =, datetime.datetime.strptime (utcstr, & # 39; %,, % d % b % Y % H: % M: % S + 0000, (GMT) & # 39;) ,,,localdatetime =, utcdatetime +, datetime.timedelta(小时=+ 8) ,,,localtimestamp =, localdatetime.timestamp () 除了才能: ,,,utcdatetime =, datetime.datetime.strptime (utcstr, & # 39; %,, % d % b % Y % H: % M: % S + 0800 & # 39;) ,,,localtimestamp =, utcdatetime.timestamp () return 才能localtimestamp
<强> 2,二分法强>
bu_daytimestamp yesterdaytimestamp两个是需要补数据的时间戳
key_nums=0 mid2=mailCount while 1==1: 中期才能=getTimeStamp(圆(mailCount)) mid2才能=圆(mid2/2) if 才能;mid 祝辞bu_daytimestamp: ,,,mailCount=mailCount-mid2 elif 才能;mid< yesterdaytimestamp: ,,,mailCount=mailCount + mid2 elif 才能mid & lt;=bu_daytimestamp 以及mid 祝辞=yesterdaytimestamp: ,,,key_nums=mailCount ,才能打破 打印(mailCount)才能 打印(key_nums)
这里只记录算法,后续遍历比较简单,就不展示了
<强>解释下部分参数:强>
服务器:登录后的邮箱
mailCount:总的邮件数量,来源于mailServer.stat()第二个参数
以上是“Python如何读取指定日期邮件”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!