python中如何使用Context Managers上下文管理器
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇文章给大家分享的是有关python中如何使用Context Managers上下文管理器,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧
千家信息网最后更新 2026年10月31日python中如何使用Context Managers上下文管理器
本篇文章给大家分享的是有关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 = filenameself.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 ffinally: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返回所有yieldfinally:os.chdir(cwd)#调用:with change_dir('test1'):print(os.listdir())with change_dir('test2'):print(os.listdir())
以上就是python中如何使用Context Managers上下文管理器,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
文件
管理
上下
上下文
目录
工作
代码
数据
切换
接下来
内容
实际
更多
模块
知识
篇文章
实用
普通
有效
上边
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
百单网互联网科技有限公司
互联网科技产业
互联网科技活动banner
互联网品科技
互联网 科技公司
唐信互联网科技
世界互联网领先科技成果
亿策互联网科技
郑州华宇互联网科技
央行互联网金融科技公司
广州恒生互联网科技有限
注册互联网科技公司经营范围大全
国大互联网教育科技有限公司薪资
昆明中奇联合互联网科技
江苏互联网智能科技产品出厂价
互联网科技机房
银川新华互联网科技学校是国营吗
数字互联网科技有限公司
绵阳真晨互联网科技有限公司
上海旺乐尼互联网科技有限公司
江苏根荣互联网科技
科技企业和互联网企业
互联网科技小贷
银优互联网科技有限公司
睿民互联网科技
互联网高科技股票
佳云科技和互联网广告
中国科技和美国互联网
上海旺乐尼互联网科技有限公司
每日互联网科技新闻