国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python設置檢查點簡單實現代碼

2020-02-23 05:31:37
字體:
來源:轉載
供稿:網友

說檢查點,其實就是對過去歷史的記錄,可以認為是log.不過這里進行了簡化.舉例來說,我現在又一段文本.文本里放有一堆堆的鏈接地址.我現在的任務是下載那些地址中的內容.另外因為網絡的問題或者網站的問題,每次下載可能不會非常的成功.有可能出現斷鏈或者socket異常錯誤。不過不管產生什么樣的錯誤,我都希望我的程序能夠一直跑下去?;蛘吣芡5艉?,繼續(xù)從為下載的鏈接處跑。而不是從開始的地方跑。這個問題非常簡單。因為這些鏈接是上下文無關的(上下文有關的情況要另外分析)。所以我只要記錄程序運行停止前的最后一條,就有希望能夠延續(xù)前面的工作。這里實現中使用的是記錄原有的鏈接,大家也可以使用計數器的方法來記錄。代碼如下:

# 這個異常是原文本內容中未出現檢查點內容出現造成的  class CheckPointMissContentError:   pass # 將文件讀取指針fd移至到檢查點對應的內容處  # check point 的規(guī)則為,讀取文件一行或者多行,進行操作后,將此一行或多行送入  # 檢查文件check_point中。以后再次運行程序,即可從該檢查點處繼續(xù)運行。  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執(zhí)行即可        raise Exception()       return Util.FAILURE # 這是我設置的常量,大家認為是0或者1就可以了      finally:       f.close()       f_check.close()# 關閉文件      print('Downloading is done........................')     return Util.SUCCESS             
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 沅陵县| 石棉县| 历史| 长兴县| 道孚县| 寿宁县| 麻城市| 昭觉县| 淮南市| 大冶市| 吐鲁番市| 大丰市| 石泉县| 枝江市| 盐城市| 双桥区| 鞍山市| 宁津县| 陇南市| 乌审旗| 阿拉善盟| 余江县| 越西县| 遂川县| 兴国县| 平顺县| 资阳市| 武强县| 荔波县| 苏州市| 德阳市| 兴隆县| 农安县| 浏阳市| 平安县| 星子县| 柳河县| 山东| 新化县| 莫力| 宁强县|