Python with关键字,上下文管理器,@contextmanager文件操作示例
本文实例讲述了Pythonwith关键字,上下文管理器,@contextmanager文件操作。分享给大家供大家参考,具体如下:
demo.py(with打开文件):
#open方法的返回值赋值给变量f,当离开with代码块的时候,系统会自动调用f.close()方法
#with的作用和使用try/finally语句是一样的。
withopen("output.txt","r")asf:
f.write("XXXXX")
demo.py(with,上下文管理器):
#自定义的MyFile类
#实现了__enter__()和__exit__()方法的对象都可称之为上下文管理器
classMyFile():
def__init__(self,filename,mode):
self.filename=filename
self.mode=mode
def__enter__(self):
print("entering")
self.f=open(self.filename,self.mode)
returnself.f
#with代码块执行完或者with中发生异常,就会自动执行__exit__方法。
def__exit__(self,*args):
print("willexit")
self.f.close()
#会自动调用MyFile对象的__enter__方法,并将返回值赋给f变量。
withMyFile('out.txt','w')asf:
print("writing")
f.write('hello,python')
#当with代码块执行结束,或出现异常时,会自动调用MyFile对象的__exit__方法。
demo.py(实现上下文管理器的另一种方式):
fromcontextlibimportcontextmanager
@contextmanager
defmy_open(path,mode):
f=open(path,mode)
yieldf
f.close()
#将my_open函数中yield后的变量值赋给f变量。
withmy_open('out.txt','w')asf:
f.write("XXXXX")
#当with代码块执行结束,或出现异常时,会自动执行yield后的代码。
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python文件与目录操作技巧汇总》、《Python文本文件操作技巧汇总》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。