Python读取指定日期邮件的实例
作者:试剑天下 发布时间:2023-05-28 17:20:01
标签:Python,日期,邮件
背景:9月份有部分数据缺失,这部分数据在邮箱里,需要重新拉取,但是每天几百封邮件,总共有6、7万封邮件,使用stat()和retr(which)结合遍历很
耗时
基于如上背景,初始大致思路为:
使用二分法获取到需要恢复数据时间范围内的中间一个值,也就是第几封邮件,然后分两头遍历,
读取到所有需要的邮件
算法函数:
1、获取到邮件的时间,由于可能收到格林威治时间邮件,所以这里做了相应的处理
def getTimeStamp(cn):
messages=mailServer.retr(cn)[1]
mail = email.message_from_bytes('\n'.encode('utf-8').join(messages))
date=email.header.decode_header(mail.get('date'))
utcstr = date[0][0].replace('+00:00','')
global utcdatetime
try:
utcdatetime = datetime.datetime.strptime(utcstr, '%a, %d %b %Y %H:%M:%S +0000 (GMT)')
localdatetime = utcdatetime + datetime.timedelta(hours=+8)
localtimestamp = localdatetime.timestamp()
except:
utcdatetime = datetime.datetime.strptime(utcstr, '%a, %d %b %Y %H:%M:%S +0800')
localtimestamp = utcdatetime.timestamp()
return localtimestamp
2、二分法
bu_daytimestamp yesterdaytimestamp两个是需要补数据的时间戳
key_nums=0
mid2=mailCount
while 1==1:
mid=getTimeStamp(round(mailCount))
mid2=round(mid2/2)
if mid >bu_daytimestamp:
mailCount=mailCount-mid2
elif mid<yesterdaytimestamp:
mailCount=mailCount+mid2
elif mid <=bu_daytimestamp and mid >=yesterdaytimestamp:
key_nums=mailCount
break
print(mailCount)
print(key_nums)
这里只记录算法,后续遍历比较简单,就不展示了
解释下部分参数:
mailServer:登录后的邮箱
mailCount:总的邮件数量,来源于mailServer.stat()第二个参数
来源:https://blog.csdn.net/tcl415829566/article/details/78481932


猜你喜欢
- [Hack] 意为”劈”、”砍”。 [Hacker] 意为”黑客”CSS Hack 是指针对不同的浏览器写不同的CSS code的过程,简单
- pyecharts是一个封装百度开源图表库echarts的包,使用pyecharts可以生成独立的网页,也可以在flask、django中集
- 前言和Word、Excel承载数据的能力相比,PPT的应用重点在于表演。比如一场发布会、一场演说、一次产品展示、一次客户沟通&hel
- 模块安装:数据操作用到的模块pymysql,需要通过pip install pymysql进行安装。redis操作用的模块是redis,需要
- Git 服务器搭建上一章节中我们远程仓库使用了 Github,Github 公开的项目是免费的,但是如果你不想让其他人看到你的项目就需要收费
- Python 作为当前最热门的编程语言之一,不仅仅是因为它的学习成本低、入门容易,还因为它具有丰富的生态环境,包括内置的模块以及第三方的库,
- 本文实例讲述了Python中文分词实现方法。分享给大家供大家参考,具体如下:在Python这pymmseg-cpp 还是十分方便的!环境 u
- 打包pyinstaller 02.py --noconsole --hidden-import PySide2.QtXml报错0:The &
- 记录下第一次使用Python读写文件的过程,虽然很简单,第一次实现其实也有些注意的事项。单个文件的读操作:我们先假设一个需求如下:读取一个t
- 直接使用word文档已经难不倒大家了,有没有想过用python构建一个word文档写点文章呢?当然这个文章的框架需要我们用代码一点点的建立,
- 上周想要取得iframe中的元素和js变量值,一直没取得,查资料得知:不能用$(document).ready()方法,而是要用$(&quo
- 简介CSS Sprites并没有一个确定的中文翻译,通常被意译为“CSS图像拼合”或“CSS贴图定位”。CSS Sprites并不是一门新技
- 如下所示:#encoding=utf-8#x=raw_input("Please enter a text: ")y=x
- 代码如下:<% class MyClass Dim var '公共变量必须使
- 使用现有的txt文本和图片,就可以用wordcloud包生成词云图。大致步骤是:1、读取txt文本并简单处理;2、读取图片,以用作背景;3、
- 如何验证信用卡是否可用,合法? 核实信用卡的真伪是一件麻烦的事儿,看看下面的代码,也许会给你帮上忙:<Script 
- 本文实例讲述了Python使用matplotlib绘制多个图形单独显示的方法。分享给大家供大家参考,具体如下:一 代码import nump
- 第一种: php部分 <?php if($_FILES['file']['error']&
- 1、查询锁情况select sid,serial#,event,BLOCKING_SESSION from v$session where
- 通过pyshp库,可以读写Shapefile文件,查询相关信息,github地址为https://github.com/Geospatial