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的Flask框架中实现简单的登录功能的教程
Apr 20 Python
Python全局变量用法实例分析
Jul 19 Python
Python中类型检查的详细介绍
Feb 13 Python
python爬虫框架scrapy实现模拟登录操作示例
Aug 02 Python
详解将Django部署到Centos7全攻略
Sep 26 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
Dec 18 Python
Python如何处理大数据?3个技巧效率提升攻略(推荐)
Apr 15 Python
FFT快速傅里叶变换的python实现过程解析
Oct 21 Python
Python实现银行账户资金交易管理系统
Jan 03 Python
python 获取当前目录下的文件目录和文件名实例代码详解
Mar 10 Python
使用keras实现Precise, Recall, F1-socre方式
Jun 15 Python
Python办公自动化之教你用Python批量识别发票并录入到Excel表格中
Jun 26 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模拟HTTP认证
2006/10/09 PHP
在PHP中使用curl_init函数的说明
2010/11/02 PHP
PHP实现的下载远程图片自定义函数分享
2015/01/28 PHP
php实现过滤UBB代码的类
2015/03/12 PHP
你应该知道PHP浮点数知识
2015/05/13 PHP
CodeIgniter针对数据库的连接、配置及使用方法
2016/03/03 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
2016/03/09 PHP
PHP仿微信发红包领红包效果
2016/10/30 PHP
php中类和对象:静态属性、静态方法
2017/04/09 PHP
javascript 面向对象编程 function也是类
2009/09/17 Javascript
jQuery温习篇 强大的JQuery选择器
2010/04/24 Javascript
jquery ajax的success回调函数中实现按钮置灰倒计时
2013/11/19 Javascript
解决jQuery动态获取手机屏幕高和宽的问题
2014/05/07 Javascript
jQuery.each使用详解
2015/07/07 Javascript
jQuery+CSS3折叠卡片式下拉列表框实现效果
2015/11/02 Javascript
jQuery内存泄露解决办法
2016/12/13 Javascript
微信小程序wx.request实现后台数据交互功能分析
2017/11/25 Javascript
JavaScript中的连续赋值问题实例分析
2019/07/12 Javascript
js Math数学简单使用操作示例
2020/03/13 Javascript
小程序使用分包的示例代码
2020/03/23 Javascript
查看Python安装路径以及安装包路径小技巧
2015/04/28 Python
python简单的函数定义和用法实例
2015/05/07 Python
Python3通过Luhn算法快速验证信用卡卡号的方法
2015/05/14 Python
python用Pygal如何生成漂亮的SVG图像详解
2017/02/10 Python
Python探索之ModelForm代码详解
2017/10/26 Python
Python实现爬虫设置代理IP和伪装成浏览器的方法分享
2018/05/07 Python
python urllib爬虫模块使用解析
2019/09/05 Python
Python3交互式shell ipython3安装及使用详解
2020/07/11 Python
致百米运动员广播稿
2014/01/29 职场文书
擅自离岗检讨书
2014/09/12 职场文书
个人委托书范本汇总
2014/10/01 职场文书
贫困证明书格式及范文
2014/10/15 职场文书
承德避暑山庄导游词
2015/02/03 职场文书
小学五年级班主任工作经验交流材料
2015/11/02 职场文书
广播稿:校园广播稿范文
2019/04/17 职场文书
Java方法重载和方法重写的区别到底在哪?
2021/06/11 Java/Android