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字符串排序方法
Aug 29 Python
跟老齐学Python之通过Python连接数据库
Oct 28 Python
Python3.2中的字符串函数学习总结
Apr 23 Python
使用python实现knn算法
Dec 20 Python
Python实现的爬虫刷回复功能示例
Jun 07 Python
Python中Numpy ndarray的使用详解
May 24 Python
python分数表示方式和写法
Jun 26 Python
Python time库基本使用方法分析
Dec 13 Python
Django restframework 框架认证、权限、限流用法示例
Dec 21 Python
Python实现手机号自动判断男女性别(实例解析)
Dec 22 Python
python中format函数如何使用
Jun 22 Python
一篇文章搞懂python的转义字符及用法
Sep 03 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
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
2009/10/29 PHP
php session_start()出错原因分析及解决方法
2013/10/28 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
Laravel 创建可以传递参数 Console服务的例子
2019/10/14 PHP
jquery 简单导航实现代码
2009/09/11 Javascript
JSONP 跨域访问代理API-yahooapis实现代码
2012/12/02 Javascript
javascript定时变换图片实例代码
2013/03/17 Javascript
JS获取复选框的值,并传递到后台的实现方法
2016/05/30 Javascript
JS实现对中文字符串进行utf-8的Base64编码的方法(使其与Java编码相同)
2016/06/21 Javascript
AngularJS 中文API参考手册
2016/07/28 Javascript
Bootstrap精简教程中秋大放送
2016/09/15 Javascript
layui分页效果实现代码
2017/05/19 Javascript
使用Require.js封装原生js轮播图的实现代码
2017/06/15 Javascript
js中位运算的运用实例分析
2018/12/11 Javascript
JS实现电话号码的字母组合算法示例
2019/02/26 Javascript
vue.js实现图书管理功能
2019/09/24 Javascript
利用Python和OpenCV库将URL转换为OpenCV格式的方法
2015/03/27 Python
Python入门学习之字符串与比较运算符
2015/10/12 Python
Python基础篇之初识Python必看攻略
2016/06/23 Python
Python编程对列表中字典元素进行排序的方法详解
2017/05/26 Python
Python3连接SQLServer、Oracle、MySql的方法
2018/06/28 Python
Python格式化日期时间操作示例
2018/06/28 Python
实例详解Matlab 与 Python 的区别
2019/04/26 Python
Django 拆分model和view的实现方法
2019/08/16 Python
基于python实现蓝牙通信代码实例
2019/11/19 Python
Python变量、数据类型、数据类型转换相关函数用法实例详解
2020/01/09 Python
重写django的model下的objects模型管理器方式
2020/05/15 Python
捷克移动配件网上商店:ProMobily.cz
2019/03/15 全球购物
Lululemon加拿大官网:加拿大知名体育服装零售商
2019/04/12 全球购物
音乐教学随笔感言
2014/02/19 职场文书
岗位职责怎么写
2014/03/14 职场文书
《灰椋鸟》教学反思
2014/04/27 职场文书
公开承诺书格式
2014/05/21 职场文书
四风对照检查材料范文
2014/09/27 职场文书
2015年小学财务工作总结
2015/07/20 职场文书
Mysql基础知识点汇总
2021/05/26 MySQL