python设置检查点简单实现代码


Posted in Python onJuly 01, 2014

说检查点,其实就是对过去历史的记录,可以认为是log.不过这里进行了简化.举例来说,我现在又一段文本.文本里放有一堆堆的链接地址.我现在的任务是下载那些地址中的内容.另外因为网络的问题或者网站的问题,每次下载可能不会非常的成功.有可能出现断链或者socket异常错误。不过不管产生什么样的错误,我都希望我的程序能够一直跑下去。或者能停掉后,继续从为下载的链接处跑。而不是从开始的地方跑。这个问题非常简单。因为这些链接是上下文无关的(上下文有关的情况要另外分析)。所以我只要记录程序运行停止前的最后一条,就有希望能够延续前面的工作。这里实现中使用的是记录原有的链接,大家也可以使用计数器的方法来记录。代码如下:

# 这个异常是原文本内容中未出现检查点内容出现造成的  
class CheckPointMissContentError: 
  pass 
# 将文件读取指针fd移至到检查点对应的内容处  
# check point 的规则为,读取文件一行或者多行,进行操作后,将此一行或多行送入  
# 检查文件check_point中。以后再次运行程序,即可从该检查点处继续运行。  
def GoCheckPoint(fd,check_point): 
  if not os.path.isfile(check_point): 
    f_check = open(check_point,'w') 
    f_check.close() 
  f_check = open(check_point,'r') 
  lines = f_check.readlines() 
  if len(lines) > 0: 
    check_content = lines[-1] #找到检查点最后一行  
    check_content = check_content.strip(' /n/r') 
    # go to check point  
    while True: 
      content = fd.readline() 
      if content == '': # eof  
        raise CheckPointMissContentError 
      if content.strip(' /n/r') == check_content: 
        break 
         
  f_check.close()#关闭检查点

有了上面一段还是不够的,需要下面的代码补充:

# 伪代码  
def Download(downloadlist,sleep_time): 
   
  if os.path.isfile(downloadlist): 
    f = open(downloadlist) 
    # check_point file name,这里为自动生成一个检查点文件  
    check_point = file[0:file.rfind('.')]+'_check.txt' 
    Util.GoCheckPoint(f,check_point) #这就是上面代码中的GoCheckPoint函数  
    f_check = open(check_point,'a')# 以追加方式写入  
     
    try: 
      while True: 
        content = f.readline() 
        if content == '': # eof  
          break 
        content = content.strip(' /n/r') 
        if content != '': 
          # has download url  
          time.sleep(sleep_time) 
          DownloadOper(path,url) #这里是伪代码..可以认为是urllib.request.retrieve()函数或者是urllib.request.urlopen()啥的  
        # 作为响应的操作后再将内容写入检查点文件  
          f_check.write(content+'/n') 
          f_check.flush() # 必须的,否则会缓存,不会写入硬盘中  
    except : # 蹦个异常也不怕,以后再次按F5执行即可  
      raise Exception() 
      return Util.FAILURE # 这是我设置的常量,大家认为是0或者1就可以了  
    finally: 
      f.close() 
      f_check.close()# 关闭文件  
    print('Downloading is done........................') 
    return Util.SUCCESS

执行完操作之后再写入到检查点文件中。以后程序挂掉,只要检查点文件还在,就可以延续前面的工作。不过这里的检查点相对于数据库中事务处理的检查点还是太简单了点。

Python 相关文章推荐
Python实现windows下模拟按键和鼠标点击的方法
Mar 13 Python
Python使用redis pool的一种单例实现方式
Apr 16 Python
通过Python 接口使用OpenCV的方法
Apr 02 Python
Python中的单行、多行、中文注释方法
Jul 19 Python
Win10下Python3.7.3安装教程图解
Jul 08 Python
Python编程实现tail-n查看日志文件的方法
Jul 08 Python
Flask使用Pyecharts在单个页面展示多个图表的方法
Aug 05 Python
使用Python对Dicom文件进行读取与写入的实现
Apr 20 Python
python pyecharts 实现一个文件绘制多张图
May 13 Python
opencv+python实现鼠标点击图像,输出该点的RGB和HSV值
Jun 02 Python
python爬虫使用scrapy注意事项
Nov 23 Python
python 开心网和豆瓣日记爬取的小爬虫
May 29 Python
如何搜索查找并解决Django相关的问题
Jun 30 #Python
python字典多条件排序方法实例
Jun 30 #Python
python实现的解析crontab配置文件代码
Jun 30 #Python
全面解读Python Web开发框架Django
Jun 30 #Python
Python科学计算环境推荐——Anaconda
Jun 30 #Python
9种python web 程序的部署方式小结
Jun 30 #Python
Python开发WebService系列教程之REST,web.py,eurasia,Django
Jun 30 #Python
You might like
css图片自适应大小
2007/11/28 Javascript
html+js实现动态显示本地时间
2013/09/21 Javascript
Ext GridPanel加载完数据后进行操作示例代码
2014/06/17 Javascript
简单实现异步编程promise模式
2015/07/31 Javascript
javascript中Array()数组函数详解
2015/08/23 Javascript
JS全局变量和局部变量最新解析
2016/06/24 Javascript
Angularjs实现分页和分页算法的示例代码
2016/12/23 Javascript
Canvas 绘制粒子动画背景
2017/02/15 Javascript
JavaScript实现的商品抢购倒计时功能示例
2017/04/17 Javascript
微信小程序支付前端源码
2018/08/29 Javascript
JS使用iView的Dropdown实现一个右键菜单
2019/05/06 Javascript
浅谈vue中组件绑定事件时是否加.native
2019/11/09 Javascript
[00:48]食人魔魔法师至宝“金鹏之幸”全新模型和自定义特效展示
2019/12/19 DOTA
spark dataframe 将一列展开,把该列所有值都变成新列的方法
2019/01/29 Python
使用python实现ftp的文件读写方法
2019/07/02 Python
django框架两个使用模板实例
2019/12/11 Python
python多线程使用方法实例详解
2019/12/30 Python
python用Tkinter做自己的中文代码编辑器
2020/09/07 Python
python如何控制进程或者线程的个数
2020/10/16 Python
canvas绘制文本内容自动换行的实现代码
2019/01/14 HTML / CSS
HTML5实现应用程序缓存(Application Cache)
2020/06/16 HTML / CSS
英国男士时尚购物网站:Stuarts London
2017/10/22 全球购物
德国家具购物网站:Möbel Höffner
2019/08/26 全球购物
路德维希•贝克(LUDWIG BECK)中文官网:德国大型美妆百货
2020/09/19 全球购物
华为慧通笔试题
2016/04/22 面试题
某公司面试题
2012/03/05 面试题
工程总经理工作职责
2013/12/09 职场文书
亲子阅读的活动方案
2014/08/15 职场文书
党员民主生活会材料
2014/12/15 职场文书
出国留学英文自荐信
2015/03/25 职场文书
2015年工商局个人工作总结
2015/07/23 职场文书
公司费用报销管理制度
2015/08/04 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书
python小程序之飘落的银杏
2021/04/17 Python
pytorch 中autograd.grad()函数的用法说明
2021/05/12 Python
详解分布式系统中如何用python实现Paxos
2021/05/18 Python