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通过递归遍历出集合中所有元素的方法
Feb 25 Python
python中的lambda表达式用法详解
Jun 22 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
Jul 02 Python
python实现远程通过网络邮件控制计算机重启或关机
Feb 22 Python
解决Tensorflow安装成功,但在导入时报错的问题
Jun 13 Python
详解Python爬取并下载《电影天堂》3千多部电影
Apr 26 Python
详解python中__name__的意义以及作用
Aug 07 Python
pytorch 可视化feature map的示例代码
Aug 20 Python
Python 用三行代码提取PDF表格数据
Oct 13 Python
Pyorch之numpy与torch之间相互转换方式
Dec 31 Python
Python叠加矩形框图层2种方法及效果
Jun 18 Python
python爬虫使用scrapy注意事项
Nov 23 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 mongodb扩展时 需要注意的事项
2013/06/18 PHP
关于php中的json_encode()和json_decode()函数的一些说明
2016/11/20 PHP
php reset() 函数指针指向数组中的第一个元素并输出实例代码
2016/11/21 PHP
PHP绕过open_basedir限制操作文件的方法
2018/06/10 PHP
JavaScript 学习小结(适合新手参考)
2009/07/30 Javascript
javascript函数中的arguments参数
2010/08/01 Javascript
jquery attr方法获取input的checked属性问题
2014/05/26 Javascript
JavaScript中的Truthy和Falsy介绍
2015/01/01 Javascript
JS利用cookie记忆当前位置的防刷新导航效果
2015/10/15 Javascript
JS实现浏览器状态栏文字闪烁效果的方法
2015/10/27 Javascript
jquery实现二级导航下拉菜单效果
2015/12/18 Javascript
Jquery EasyUI实现treegrid上显示checkbox并取选定值的方法
2016/04/29 Javascript
RequireJS多页面应用实例分析
2016/06/29 Javascript
JavaScript中自带的 reduce()方法使用示例详解
2016/08/10 Javascript
理解javascript中的Function.prototype.bind的方法
2017/02/03 Javascript
结合mint-ui移动端下拉加载实践方法总结
2017/11/08 Javascript
vue.js中引入vuex储存接口数据及调用的详细流程
2017/12/14 Javascript
vue实现登录后页面跳转到之前页面
2018/01/07 Javascript
详解Vue的钩子函数(路由导航守卫、keep-alive、生命周期钩子)
2018/07/24 Javascript
Vue.js中 v-model 指令的修饰符详解
2018/12/03 Javascript
Vue微信公众号网页分享的示例代码
2020/05/28 Javascript
[02:02:38]VG vs Mineski Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
python解析xml文件操作实例
2014/10/05 Python
详谈python在windows中的文件路径问题
2018/04/28 Python
一文带你了解Python 四种常见基础爬虫方法介绍
2020/12/04 Python
“型”走纽约上东区:Sam Edelman
2017/04/02 全球购物
拥有超过850家商店的美国在线派对商店:Party City
2018/10/21 全球购物
Python如何实现单例模式
2016/06/03 面试题
电子商务专业个人的自我评价
2013/11/19 职场文书
初中考试作弊检讨书
2014/02/01 职场文书
会展策划与管理专业大学生职业生涯规划
2014/02/07 职场文书
幼儿园庆六一活动方案
2014/03/06 职场文书
企业出纳岗位职责
2014/03/12 职场文书
党政领导班子群众路线对照检查材料思想汇报
2014/09/27 职场文书
六年级数学教学反思
2016/02/16 职场文书
会议开幕致辞怎么写
2016/03/03 职场文书