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实现抓取城市的PM2.5浓度和排名
Mar 19 Python
python获取各操作系统硬件信息的方法
Jun 03 Python
python深度优先搜索和广度优先搜索
Feb 07 Python
简单实现python数独游戏
Mar 30 Python
python基于物品协同过滤算法实现代码
May 31 Python
对python修改xml文件的节点值方法详解
Dec 24 Python
关于python多重赋值的小问题
Apr 17 Python
Python 使用PyQt5 完成选择文件或目录的对话框方法
Jun 27 Python
Python散点图与折线图绘制过程解析
Nov 30 Python
Python 测试框架unittest和pytest的优劣
Sep 26 Python
Python Selenium XPath根据文本内容查找元素的方法
Dec 07 Python
Python就将所有的英文单词首字母变成大写
Feb 12 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
ie6 动态缩略图不显示的原因
2009/06/21 PHP
浅析php原型模式
2014/11/25 PHP
php使用Jpgraph绘制饼状图的方法
2015/06/10 PHP
php实现Session存储到Redis
2015/11/11 PHP
使用php实现网站验证码功能【推荐】
2017/02/09 PHP
PHP面向对象程序设计之构造方法和析构方法详解
2019/06/13 PHP
关于图片验证码设计的思考
2007/01/29 Javascript
用js实现小球的自由移动代码
2013/04/22 Javascript
JS中判断JSON数据是否存在某字段的方法
2014/03/07 Javascript
jQuery中用dom操作替代正则表达式
2014/12/29 Javascript
JavaScript 面向对象与原型
2015/04/10 Javascript
jQuery实现彩带延伸效果的网页加载条loading动画
2015/10/29 Javascript
微信小程序 location API实例详解
2016/10/02 Javascript
Node.js调试技术总结分享
2017/03/12 Javascript
js解决软键盘遮挡输入框的问题分享
2017/12/19 Javascript
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
解决Vue中mounted钩子函数获取节点高度出错问题
2018/05/18 Javascript
Vue.js实现的购物车功能详解
2019/01/27 Javascript
Django+Vue实现WebSocket连接的示例代码
2019/05/28 Javascript
bootstrap-treeview实现多级树形菜单 后台JSON格式如何组织?
2019/07/26 Javascript
vue-cli3访问public文件夹静态资源报错的解决方式
2020/09/02 Javascript
[40:05]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第一局
2016/02/25 DOTA
python使用post提交数据到远程url的方法
2015/04/29 Python
Python实现统计代码行的方法分析
2017/07/12 Python
python记录程序运行时间的三种方法
2017/07/14 Python
python机器学习理论与实战(五)支持向量机
2018/01/19 Python
Python 添加文件注释和函数注释操作
2020/08/09 Python
python中append函数用法讲解
2020/12/11 Python
财务总监管理职责范文
2014/03/09 职场文书
医学生毕业自我鉴定
2014/03/26 职场文书
教师产假请假条范文
2014/04/10 职场文书
餐饮投资计划书
2014/04/25 职场文书
采购部长岗位职责
2014/06/13 职场文书
律师授权委托书范本
2014/10/07 职场文书
2016年高校自主招生自荐信范文
2015/03/24 职场文书
2015年大学宣传部工作总结
2015/05/26 职场文书