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程序设计有所帮助。