Windows安装第三方库:(retry)
C:\Users\jacky\Desktop> pip3 install retry -i http://pypi.douban.com/simple --trusted-host=pypi.douban.com
Windows卸载第三方库:(retry)
C:\Users\jacky>pip3 uninstall retry -y
Uninstalling retry-0.9.2:
Successfully uninstalled retry-0.9.2
###
例子一:(当retry装饰器无参数时,遇到异常会一直重试,直到成功为止)
#coding=utf-8
from retry import retry
index_1 = 0
@retry() #如果遇到异常,会一直重试,直到成功为止
def func1():
global index_1
index_1 = index_1 + 1
if index_1 >= 5:
print(f'执行到第{index_1}次时,没有异常了')
else:
print('异常')
raise #引发一次异常
if __name__ == '__main__':
func1()
print("-" * 10)
print(index_1)
脚本运行的结果:
C:\Users\jacky\Desktop>python xx.py
异常
异常
异常
异常
执行到第5次时,没有异常了
----------
5
C:\Users\jacky\Desktop>
###
例子二:
#coding=utf-8
from retry import retry
import random
index_1 = 0
@retry()
def func1():
global index_1
Key_1 = random.choice(['zhuohua','Python',123,168]) #随机显示列表里的某个元素
index_1 = index_1 + 1
if Key_1 == 'zhuohua':
print(f"第{index_1}次时找到元素'{Key_1}'")
else:
print('异常')
raise #引发一次异常
if __name__ == '__main__':
func1()
脚本运行的结果:(由于是随机显示列表里的某个元素,所以每次的结果都可能不一样)
C:\Users\jacky\Desktop>python xx.py
异常
异常
异常
异常
异常
异常
第7次时找到元素'zhuohua'
C:\Users\jacky\Desktop>
###
例子三:
#coding=utf-8
from retry import retry
import datetime
@retry() #当D:\1.txt不存在时,会一直重试,直到成功为止
def func1(): #检测文件D:\1.txt是否存在
Path_1 = "D:/1.txt"
f_name = open(Path_1)
print("文件D:\\1.txt打开成功")
f_name.close()
def func2(): #把成功的输出结果写入(覆盖)到文件D:\2.txt
dt = datetime.datetime.now()
tt = dt.strftime('%Y%m%d_%H%M%S')
Result = f"检测时间:{tt} 文件D:\\1.txt已经存在了"
Path_1 = r'D:/2.txt' #文件D:\2.txt不存在时,会自动创建
f_name = open(Path_1,'w')
print(Result,file=f_name)
if __name__ == '__main__':
func1() #假如func1()没有执行成功,就不会执行func2()
func2()
脚本运行的效果:(D:\1.txt不存在时;会一直重试,直到成功为止;组合键Ctrl+c可结束)
备注:文件D:\1.txt不存在时,不会把记录数据写到文件D:\2.txt
脚本运行的效果:(D:\1.txt存在时;由于是覆盖,所以就算多次运行脚本,文件D:\2.txt也只会有一条记录数据)
文件D:\2.txt的记录数据:
检测时间:20190208_143415 文件D:\1.txt已经存在了
###
例子四:(当retry装饰器有参数时)
#coding=utf-8
from retry import retry
import datetime
index_1 = 0
@retry(tries=3,delay=2) #出现错误时,就重试3次,每次尝试之间间隔2秒;重试到第3次时,依旧出现错误就引发异常。
def func1(): #假如文件D:\1.txt不存在,就会引发异常
global index_1
index_1 = index_1 + 1
print(f"第{index_1}次执行")
Path_1 = "D:/1.txt"
f_name = open(Path_1)
print("文件D:\\1.txt打开成功")
f_name.close()
def func2(): #把成功的输出结果写入(追加)到文件D:\2.txt
dt = datetime.datetime.now()
tt = dt.strftime('%Y%m%d_%H%M%S')
Result = f"检测时间:{tt} 文件D:\\1.txt已经存在"
Path_1 = r'D:/2.txt' #文件D:\2.txt不存在时,会自动创建
f_name = open(Path_1,'a')
print(Result,file=f_name)
if __name__ == '__main__':
func1()
func2()
脚本运行的效果:(D:\1.txt不存在时)
C:\Users\jacky\Desktop>python xx.py
第1次执行
第2次执行
第3次执行
Traceback (most recent call last):
File "xx.py", line 30, in <module>
func1()
File "C:\Users\jacky\AppData\Local\Programs\Python\Python36-32\lib\site-packages\decorator.py", line 232, in fun
return caller(func, *(extras + args), **kw)
File "C:\Users\jacky\AppData\Local\Programs\Python\Python36-32\lib\site-packages\retry\api.py", line 74, in retry_decorator
logger)
File "C:\Users\jacky\AppData\Local\Programs\Python\Python36-32\lib\site-packages\retry\api.py", line 33, in __retry_internal
return f()
File "xx.py", line 16, in func1
f_name = open(Path_1)
FileNotFoundError: [Errno 2] No such file or directory: 'D:/1.txt'
C:\Users\jacky\Desktop>
备注:文件D:\1.txt不存在时,不会把记录数据写到文件D:\2.txt
多次运行脚本的效果:(D:\1.txt存在时;由于是追加,所以多次运行脚本,文件D:\2.txt就会有多条记录数据)
文件D:\2.txt的记录数据:
检测时间:20190208_152202 文件D:\1.txt已经存在
检测时间:20190208_152311 文件D:\1.txt已经存在
检测时间:20190208_152405 文件D:\1.txt已经存在
相关文章:
try语句
for循环语句
Python3使用Virtual Environment
CentOS8使用Socket(检测TCP端口)
文件操作(创建、读取、写入、追加) |