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 相关文章推荐
使用70行Python代码实现一个递归下降解析器的教程
Apr 17 Python
Python中设置变量访问权限的方法
Apr 27 Python
横向对比分析Python解析XML的四种方式
Mar 30 Python
pygame 精灵的行走及二段跳的实现方法(必看篇)
Jul 10 Python
使用Pyinstaller的最新踩坑实战记录
Nov 08 Python
python2爬取百度贴吧指定关键字和图片代码实例
Aug 14 Python
python中time库的实例使用方法
Oct 31 Python
Django项目使用ckeditor详解(不使用admin)
Dec 17 Python
Python+opencv+pyaudio实现带声音屏幕录制
Dec 23 Python
基于python的docx模块处理word和WPS的docx格式文件方式
Feb 13 Python
python编程进阶之异常处理用法实例分析
Feb 21 Python
Python通过正则库爬取淘宝商品信息代码实例
Mar 02 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初学者头疼问题总结
2006/10/09 PHP
浅谈apache和nginx的rewrite的区别
2013/02/22 PHP
关于PHP语言构造器介绍
2013/07/08 PHP
改写函数实现PHP二维/三维数组转字符串
2013/09/13 PHP
php随机显示图片的简单示例
2014/02/15 PHP
php中addslashes函数与sql防注入
2014/11/17 PHP
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
PHP判断JSON对象是否存在的方法(推荐)
2016/07/06 PHP
Javascript 事件流和事件绑定
2009/07/16 Javascript
利用Jquery实现可多选的下拉框
2014/02/21 Javascript
javascript模拟php函数in_array
2015/04/27 Javascript
简述Matlab中size()函数的用法
2016/03/20 Javascript
Bootstrap fileinput文件上传预览插件使用详解
2017/05/16 Javascript
JS jQuery使用正则表达式去空字符的简单实现代码
2017/05/20 jQuery
React学习笔记之事件处理(二)
2017/07/02 Javascript
JS模拟实现哈希表及应用详解
2018/05/04 Javascript
vue webpack build资源相对路径的问题及解决方法
2020/06/04 Javascript
Vue和React有哪些区别
2020/09/12 Javascript
vue render函数动态加载img的src路径操作
2020/10/26 Javascript
Python 实现在文件中的每一行添加一个逗号
2018/04/29 Python
对Python定时任务的启动和停止方法详解
2019/02/19 Python
Python3数字求和的实例
2019/02/19 Python
对python3.4 字符串转16进制的实例详解
2019/06/12 Python
python做反被爬保护的方法
2019/07/01 Python
python 函数中的内置函数及用法详解
2019/07/02 Python
Django重设Admin密码过程解析
2020/02/10 Python
python实现单机五子棋
2020/08/28 Python
俄罗斯香水和化妆品购物网站:Л’Этуаль
2018/05/10 全球购物
工程造价管理专业大专生求职信
2013/10/06 职场文书
幼儿园长自我鉴定
2013/10/17 职场文书
司机岗位职责
2013/11/15 职场文书
暑期实习鉴定
2013/12/16 职场文书
信息学院毕业生自荐信范文
2014/03/04 职场文书
2015年元旦活动总结
2014/05/09 职场文书
导游词之杭州西湖
2019/09/19 职场文书
用python批量解压带密码的压缩包
2021/05/31 Python