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 备份程序代码实现
Mar 06 Python
python如何读写json数据
Mar 21 Python
python pandas dataframe 行列选择,切片操作方法
Apr 10 Python
django 环境变量配置过程详解
Aug 06 Python
Python如何调用外部系统命令
Aug 07 Python
FFrpc python客户端lib使用解析
Aug 24 Python
pytorch 图像预处理之减去均值,除以方差的实例
Jan 02 Python
Python有参函数使用代码实例
Jan 06 Python
关于windows下Tensorflow和pytorch安装教程
Feb 04 Python
numpy中生成随机数的几种常用函数(小结)
Aug 18 Python
selenium3.0+python之环境搭建的方法步骤
Feb 01 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中用header图片地址 简单隐藏图片源地址
2008/04/09 PHP
php实现信用卡校验位算法THE LUHN MOD-10示例
2014/05/07 PHP
php处理json格式数据经典案例总结
2016/05/19 PHP
thinkPHP3.2.2框架行为扩展及demo示例
2018/06/19 PHP
php7 新增功能实例总结
2020/05/25 PHP
可输入的下拉框
2006/06/19 Javascript
JS类中定义原型方法的两种实现的区别
2007/03/08 Javascript
javascript中获取选中对象的类型
2007/04/02 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
详解JavaScript正则表达式之分组匹配及反向引用
2016/03/09 Javascript
实例讲解JavaScript的Backbone.js框架中的View视图
2016/05/05 Javascript
BootStrap实现树形目录组件代码详解
2016/06/21 Javascript
URL的参数中有加号传值变为空格的问题(URL特殊字符)
2016/11/04 Javascript
Mongoose经常返回e11000 error的原因分析
2017/03/29 Javascript
es6学习之解构时应该注意的点
2017/08/29 Javascript
详解刷新页面vuex数据不消失和不跳转页面的解决
2018/01/30 Javascript
详解从Vue-router到html5的pushState
2018/07/21 Javascript
vue 实现 rem 布局或vw 布局的方法
2019/11/13 Javascript
python处理图片之PIL模块简单使用方法
2015/05/11 Python
python和bash统计CPU利用率的方法
2015/07/10 Python
解决python读取几千万行的大表内存问题
2018/06/26 Python
python射线法判断检测点是否位于区域外接矩形内
2019/06/28 Python
django使用django-apscheduler 实现定时任务的例子
2019/07/20 Python
基于python操作ES实例详解
2019/11/16 Python
使用css3背景渐变中的透明度来设置不同颜色的背景渐变
2014/03/31 HTML / CSS
英国银首饰公司:e&e Jewellery
2021/02/11 全球购物
教师通用专业自荐书范文
2014/02/11 职场文书
2014年乡镇个人工作总结
2014/12/03 职场文书
会计求职自荐信范文
2015/03/04 职场文书
公司员工违纪检讨书
2015/05/05 职场文书
中国梦宣传标语口号
2015/12/26 职场文书
社区志愿者服务心得体会
2016/01/22 职场文书
《夹竹桃》教学反思
2016/02/23 职场文书
解决golang在import自己的包报错的问题
2021/04/29 Golang
SpringCloud Alibaba 基本开发框架搭建过程
2021/06/13 Java/Android
python套接字socket通信
2022/04/01 Python