python中如何使用Context Managers上下文管理器
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,本篇文章给大家分享的是有关python中如何使用Context Managers上下文管理器,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧
千家信息网最后更新 2025年12月01日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安全错误
数据库的锁怎样保障安全
头区网络安全大队
软件开发技术工作5年
linux服务器案例
中专学历学软件开发好就业吗
java 检测数据库表
tkinter 数据库
成都德奘平软件开发工作室
手机如何自己开服务器
桑蒂阿尔达马数据库
兰州玖贰柒互联网科技官网
服务器接口安全问题
一个服务器有几个角色
网络安全我践行美术字体图片
级联权限系统数据库设计
湖北应用软件开发价钱是多少
filiation 软件开发
20网络安全知识竞赛入口
异地组网的点对网络技术
杭州恒生软件开发
方舟服务器怎么改成英文
数据库故障类别英文
app软件开发公司
邮件服务器过滤器
软件开发越学越难吗
武汉软件开发兼职
数据库select年龄加一
虎丘区正规服务器代理厂家
免费的云服务器app
四川大数据软件开发价钱是多少
达内软件开发培训课程