其他分享
首页 > 其他分享> > 包含 Python 中的文件的上下icode9文管理器

包含 Python 中的文件的上下icode9文管理器

作者:互联网

上下文管理器是什么?
它是一个在上下文开始和结束时通知实现两种魔法方法和任何其他方法的对象。__enter____exit__
例如,当上下文管理器结束时,对象文件将关闭。
withopen('test_ch30.txt','w+')asfile:
file.write('Blewthelidofurlife')
#theopenfilehasautomaticllybeenclossed
上下文管理器通常用于阅读和写入文件,以帮助节省系统内存,并通过保留每个过程的资源来改进资源管理。
打开文件using确保文件描述符自动关闭。with
Howstatment如何实现上下文管理器?with
1-当一个对象被调用时,
解释器调用该方法
调用和执行
执行过程所需的设置代码。with__eneter__with
2-当状态结束时,解释器调用该方法。with__exit__
插图:
可选文字
实现contect管理器需要什么?
classContextManager(object):
"""docstringforContextManager"""
def__init__(self):
pass
def__enter__(self):
print("__enter__()")
#optionalyreturnanobj
return"aninstance"
def__exit__(self,exc_type,exc_val,traceback):
print("__exit__with",exc_valifexc_valelse'nope')
withContextManager()ase:
print("isa",e)
多个上下文管理器
withopen('test_ch30.txt')asinput_file,open('test_ch77.txt','w')asoutput_file:
#dosomethingwithbothfiles.
#e.g.copythecontentsofinput_fileintooutput_file
forlineininput_file:
output_file.write(line+'
')
#Ithasthesameeffectasnestingcontextmanagers:
withopen('test_ch30.txt')asinput_file:
withopen('test_ch77.txt','w')asoutput_file:
forlineininput_file:
output_file.write(line+'
')
管理资源
classFile():
def__init__(self,filename,mode):
self.filename=filename
self.mode=mode
def__enter__(self):
self.open_file=open(self.filename,self.mode)
returnself.open_file
def__exit__(self,*args):
self.open_file.close()
for_inrange(10000):
withFile('test_ch30.txt','w')asf:
f.write('foo')
管理文件类别如下。
ManageFile遵循/遵守上下文管理器协议,支持类别with语句代码链接

标签:python,导入机制原理,文件格式,函数,目录
来源: