网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

python中如何使用ContextManagers上下文管理器

本篇文章给大家分享的是有关python中如何使用Context Managers上下文管理器,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

创新互联专注于嘉峪关网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供嘉峪关营销型网站建设,嘉峪关网站制作、嘉峪关网页设计、嘉峪关网站官网定制、成都微信小程序服务,打造嘉峪关网络公司原创品牌,更为您提供嘉峪关网站排名全网营销落地服务。

新建一个python文件命名为py3_contextmanager.py,在这个文件中进行操作代码编写:

# Context Managers上下文管理器#用来有效的管理资源,之前在讲文件读写操作中#有提到过#现在以文件读写为例#演示 Context Managers上下文管理器#普通的文件写入操作:f = open('test.txt','w') f.write('写入数据到文件!')f.close()#接下来使用 Context Managers的方式完成:with open('test_new.txt','w') as f:  f.write('写入数据到文件!')#这里我们并没有去写关闭文件的操作#因为当我们完成自己的代码操作,退出#with上下文管理器后,文件会自动关闭#上下文管理器常用在数据库的连接关闭#还可以获取释放锁等操作
#接下来我们自定义一个上下文管理器类#用来打开文件class Open_File():  #初始化文件名和文件打开的模式  def __init__(self,filename,mode):    self.filename = filename    self.mode = mode  #设置上下文管理器的实际操作  #打开文件    def __enter__(self):    self.file = open(self.filename,self.mode)    return self.file  #退出管理器时,执行关闭文件操作  def __exit__(self,exc_type,exc_val,traceback):    self.file.close()#使用上下文管理器#with这行代码块实际执行了#Open_File类中的 __init__#__enter__两个方法with Open_File('sample.txt','w') as f:  f.write('testing')#我们打印文件的状态print(f.closed)#True
#接下来使用装饰器来重写上面的#自定义上下文管理器#需要导入模块contexlibfrom contextlib import contextmanager
@contextmanagerdef open_file(file,mode):  try:    f = open(file,mode)    yield f  finally:    f.close()#调用管理器with open_file('sample_new.txt','w') as wf:  wf.write('写入数据!')print(wf.closed)
#接下来看一个os模块中的操作import os
#获取当前工作目录cwd = os.getcwd()#切换到指定目录test1os.chdir('test1')#列出该目录中的所有内容print(os.listdir())#切换回当前工作目录os.chdir(cwd)
#获取当前工作目录cwd = os.getcwd()#切换到指定目录test2os.chdir('test2')#列出该目录中的所有内容print(os.listdir())#切换回当前工作目录os.chdir(cwd)#我们要做同样的事情很多次#运行我们得到结果如下:#['test1.doc', 'test1.txt']#['test2.doc', 'test2.txt']#上边的代码逻辑非常适合#使用上下文管理器实现#修改如下:@contextmanagerdef change_dir(destination):  try:    cwd = os.getcwd()    os.chdir(destination)    #这里yield返回所有    yield  finally:    os.chdir(cwd)#调用:with change_dir('test1'):  print(os.listdir())with change_dir('test2'):  print(os.listdir())

以上就是python中如何使用Context Managers上下文管理器,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。


文章标题:python中如何使用ContextManagers上下文管理器
转载来于:http://bjjierui.cn/article/gedecj.html

其他资讯