python检查_python设置检查点简单实现
说检查点,其实就是对过去历史的记录,可以认为是log.不过这里进行了简化.举例来说,我现在又一段文本.文本里放有一堆堆的链接地址.我现在的任务是下载那些地址
中的内容.另外因为网络的问题或者网站的问题,每次下载可能不会非常的成功.有可能出现断链或者socket异常错误。不过不管产生什么样的错误,我都希望我的程序能
够一直跑下去。或者能停掉后,继续从为下载的链接处跑。而不是从开始的地方跑。这个问题非常简单。因为这些链接是上下文无关的(上下文有关的情况要另外分析)。所以我
只要记录程序运行停止前的最后一条,就有希望能够延续前面的工作。这里实现中使用的是记录原有的链接,大家也可以使用计数器的方法来记录。代码如下:
将文件读取指针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()#关闭检查点
有了上面一段还是不够的 大专栏 python设置检查点简单实现,需要下面的代码补充:
伪代码 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设置检查点简单实现相关推荐
- python检查_python – 检查属性是否存在的最佳方法是什...
没有"最好"的方法,因为你不只是检查一个属性是否存在;它总是一些大型计划的一部分.有几种正确的方法和一种值得注意的错误方法. 错误的方法 if 'property' in a.__ ...
- 猜数字游戏python程序_python实现的简单猜数字游戏
本文实例讲述了python实现的简单猜数字游戏.分享给大家供大家参考.具体如下: 给定一个1-99之间的数,让用户猜数字,当用户猜错时会提示用户猜的数字是过大还是过小,知道用户猜对数字为止,猜对数字用 ...
- python不简单_Python学习并不简单!月薪过万也不易
Python入门简单,精通不易 可以说,大部分编程语言都是入门简单,精通不易. 了解编程语言的基本语法很快,使用编程语言开发符合企业标准的项目很难.要想达到企业用人标准,需要花费非常多的时间去学习编程 ...
- python万年历_Python实现的简单万年历例子分享
#!/usr/bin/env python2 #-*- coding:utf-8 -*- __author__ = 'jalright' """ 使用python实现万年 ...
- python 熊猫_python之pandas简单介绍及使用(一)
一. Pandas简介 1.Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和 ...
- neo4j python 算法_python操作neo4j简单实例
一:neo4j是什么 neo4j:Neo4j是一个高性能的,NOSQL图形数据库,有关于更多neo4j的资料出门右拐 二:python操作neo4j的实现 python中neo4j的操作可以利用驱动包 ...
- 支持向量机python实例_Python机器学习SVM简单应用实例 | kTWO-个人博客
1.前言 在上一篇理论性的文章中我们说过了,SVM是分线性可分和线性不可分两种情况的,线性可分的比较容易理解,比较容易一些,线性不可分的就稍微复杂一点了.我们测试就分别用线性可分和线性不可分两种情况分 ...
- python 差异表达_Python设置差异
python 差异表达 If there are two sets A and B, then the difference between A and B (A-B) is a new set of ...
- python 交集_Python设置交集
python 交集 The intersection (A∩B) of two sets A and B is the set that contains all the elements commo ...
最新文章
- linux 命令行简介
- Python 使用 UTF-8 编码(转)
- SharePoint 2007 迁移所有数据库
- python彩色图像如何进行高斯滤波ValueError: correlate2d inputs must both be 2-D arrays解决方法
- python找指定内容_python查找指定具有相同内容文件的方法
- 关于 SAP Spartacus SSR 服务器返回的响应是否应该被缓存的问题
- 名词解释多媒体计算机,多媒体-名词解释及填空
- [vue] v-on可以绑定多个方法吗?
- Spring Boot基础学习笔记05:Spring Boot多环境配置
- 鼠绘漫画 for wp8.1
- ModelMaker的教學網站
- python读取csv数据出错_使用Pandas在python中读取csv文件时出错
- web optimize_image / Jpegoptim / ImageOptim / google webP
- java实现一个旅游网站
- Adjoint of SE(3)
- 公路路基路面回弹弯沉检测技术(转载)
- vue项目购物车组件、清空购物车
- Python标准库:内置函数complex([real[, imag]])
- 苹果手机怎么定位安卓手机_手机:苹果VS安卓 跑分不代表手机流畅度|安卓|安卓系统|ios系统|安卓手机|手机...
- 软件技术的现状以及未来发展趋势