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中的各种函数的使用
May 24 Python
详解Tensorflow数据读取有三种方式(next_batch)
Feb 01 Python
Python-OpenCV基本操作方法详解
Apr 02 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
Sep 17 Python
对python自动生成接口测试的示例讲解
Nov 30 Python
实例详解Python模块decimal
Jun 26 Python
python中类的输出或类的实例输出为这种形式的原因
Aug 12 Python
使用python实现哈希表、字典、集合操作
Dec 22 Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
Mar 12 Python
python为什么要安装到c盘
Jul 20 Python
记一次Django响应超慢的解决过程
Sep 17 Python
pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
May 22 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 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
2012/04/09 PHP
解析php下载远程图片函数 可伪造来路
2013/06/25 PHP
php分页函数完整实例代码
2014/09/22 PHP
PHP通过加锁实现并发情况下抢码功能
2016/08/10 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
2016/08/17 PHP
Discuz! 6.1_jQuery兼容问题
2008/09/23 Javascript
Div自动滚动到末尾的代码
2008/10/26 Javascript
js/jQuery简单实现选项卡功能
2014/01/02 Javascript
node.js中的fs.rmdir方法使用说明
2014/12/16 Javascript
详解JavaScript ES6中的Generator
2015/07/28 Javascript
CKEditor无法验证的解决方案(js验证+jQuery Validate验证)
2016/05/09 Javascript
Vue.js 和 MVVM 的注意事项
2016/11/07 Javascript
javascript-解决mongoose数据查询的异步操作
2016/12/22 Javascript
详解如何在vue中使用sass
2017/06/21 Javascript
解决Js先触发失去焦点事件再执行点击事件的问题
2018/08/30 Javascript
nodejs图片处理工具gm用法小结
2018/12/12 NodeJs
NodeJS实现一个聊天室功能
2019/11/25 NodeJs
three.js 利用uv和ThreeBSP制作一个快递柜功能
2020/08/18 Javascript
梳理一下vue中的生命周期
2020/12/30 Vue.js
Flask框架学习笔记(一)安装篇(windows安装与centos安装)
2014/06/25 Python
python中的reduce内建函数使用方法指南
2014/08/31 Python
django的csrf实现过程详解
2019/07/26 Python
python字符串拼接+和join的区别详解
2020/12/03 Python
Python约瑟夫生者死者小游戏实例讲解
2021/01/04 Python
潘多拉意大利官方网上商城:网上选购PANDORA珠宝
2018/10/07 全球购物
俄罗斯首家面向中国消费者的一站式购物网站:Wruru
2020/05/08 全球购物
一些Unix笔试题和面试题
2012/09/25 面试题
班组安全员工作职责
2014/02/01 职场文书
关于期中考试的反思
2014/02/02 职场文书
《绿色蝈蝈》教学反思
2014/03/02 职场文书
文明班级建设方案
2014/05/15 职场文书
贷款承诺书范文
2014/05/19 职场文书
大学生简历求职信
2014/06/24 职场文书
休假证明书
2015/06/24 职场文书
暑假生活随笔
2015/08/15 职场文书
创业计划书之农家乐
2019/10/09 职场文书