Python读取指定日期邮件的实例


Posted in Python onFebruary 01, 2019

背景: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()第二个参数

以上这篇Python读取指定日期邮件的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python编写网页爬虫脚本并实现APScheduler调度
Jul 28 Python
介绍Python中的文档测试模块
Apr 28 Python
在Python中的Django框架中进行字符串翻译
Jul 27 Python
Python的Django REST框架中的序列化及请求和返回
Apr 11 Python
Python爬虫利用cookie实现模拟登陆实例详解
Jan 12 Python
python一键去抖音视频水印工具
Sep 14 Python
Django框架实现的简单分页功能示例
Dec 04 Python
Python实现繁体中文与简体中文相互转换的方法示例
Dec 18 Python
python3.6编写的单元测试示例
Aug 17 Python
Python Scrapy框架第一个入门程序示例
Feb 05 Python
keras自定义损失函数并且模型加载的写法介绍
Jun 15 Python
python如何变换环境
Jul 21 Python
Python 利用切片从列表中取出一部分使用的方法
Feb 01 #Python
对pandas通过索引提取dataframe的行方法详解
Feb 01 #Python
python 实现提取某个索引中某个时间段的数据方法
Feb 01 #Python
深入理解Python异常处理的哲学
Feb 01 #Python
python for 循环获取index索引的方法
Feb 01 #Python
对python For 循环的三种遍历方式解析
Feb 01 #Python
python使用for循环计算0-100的整数的和方法
Feb 01 #Python
You might like
按上下级层次关系输出内容的PHP代码
2010/07/17 PHP
php求数组全排列,元素所有组合的方法
2016/05/05 PHP
javascript 动态设置已知select的option的value值的代码
2009/12/16 Javascript
基于Jquery+Ajax+Json实现分页显示附效果图
2014/07/30 Javascript
Bootstrap每天必学之媒体对象
2015/11/30 Javascript
剖析Node.js异步编程中的回调与代码设计模式
2016/02/16 Javascript
javascript replace()第二个参数为函数时的参数用法
2016/12/26 Javascript
关于vue-router的beforeEach无限循环的问题解决
2017/09/09 Javascript
JavaScript中错误正确处理方式小结你用对了吗
2017/10/10 Javascript
JavaScript正则表达式函数总结(常用)
2018/02/22 Javascript
使用javascript函数编写简单银行取钱存钱流程
2018/05/26 Javascript
Vue.js单向绑定和双向绑定实例分析
2018/08/14 Javascript
es6中reduce的基本使用方法
2019/09/10 Javascript
使用Promise封装小程序wx.request的实现方法
2019/11/13 Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
2019/12/01 Javascript
jQuery HTML设置内容和属性操作实例分析
2020/05/20 jQuery
vue实现树状表格效果
2020/12/29 Vue.js
Javascript实现关闭广告效果
2021/01/29 Javascript
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
[01:14:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Orenda
2014/05/22 DOTA
Python去掉字符串中空格的方法
2014/03/11 Python
使用Python实现一个简单的项目监控
2015/03/31 Python
Python单元测试简单示例
2018/07/03 Python
python flask 如何修改默认端口号的方法步骤
2019/07/12 Python
python如何实现数据的线性拟合
2019/07/19 Python
python 生成器和迭代器的原理解析
2019/10/12 Python
python FTP批量下载/删除/上传实例
2019/12/22 Python
Python高阶函数、常用内置函数用法实例分析
2019/12/26 Python
在pytorch中动态调整优化器的学习率方式
2020/06/24 Python
Html5新特性用canvas标签画多条直线附效果截图
2014/06/30 HTML / CSS
财务总监岗位职责
2015/02/03 职场文书
2015年重阳节活动总结
2015/03/24 职场文书
护理专业毕业自我鉴定
2019/08/12 职场文书
导游词之南昌滕王阁
2019/11/29 职场文书
Jupyter notebook 输出部分显示不全的解决方案
2021/04/24 Python
Eclipse+Java+Swing+Mysql实现电影购票系统(详细代码)
2022/01/18 Java/Android