python中如何使用Context Managers上下文管理器
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,本篇文章给大家分享的是有关python中如何使用Context Managers上下文管理器,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧
千家信息网最后更新 2025年01月22日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 = 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
#接下来使用装饰器来重写上面的
#自定义上下文管理器
#需要导入模块contexlib
from contextlib import contextmanager
@contextmanager
def 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()
#切换到指定目录test1
os.chdir('test1')
#列出该目录中的所有内容
print(os.listdir())
#切换回当前工作目录
os.chdir(cwd)
#获取当前工作目录
cwd = os.getcwd()
#切换到指定目录test2
os.chdir('test2')
#列出该目录中的所有内容
print(os.listdir())
#切换回当前工作目录
os.chdir(cwd)
#我们要做同样的事情很多次
#运行我们得到结果如下:
#['test1.doc', 'test1.txt']
#['test2.doc', 'test2.txt']
#上边的代码逻辑非常适合
#使用上下文管理器实现
#修改如下:
@contextmanager
def 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上下文管理器,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
文件
管理
上下
上下文
目录
工作
代码
数据
切换
接下来
内容
实际
更多
模块
知识
篇文章
实用
普通
有效
上边
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
深圳东信网络技术有限公司
公司网络安全教育培训制度
科技互联网生态平台
停车场智能软件开发
温州民居数据库
股份制银行软件开发岗
英雄联盟维克托数据库
数据库怎样建表
义马软件开发公司在哪里
江苏媒体网络技术服务成本
aws时序数据库
网络安全标准化
软件开发设计有哪些职位
智慧照明服务器搭建
ps4媒体服务器
网络安全的学习计划
网络安全知识大全100条
嵌入式软件开发区小吃街西安
时序数据库技术特点
阿里巴巴用的什么数据库
大型的管理信息系统用什么数据库
创业网络安全工程师
典型的数据库系统
网络安全名词解释认证
博雅数据库查询数据
服务器日志在哪看
杰赛科技网络安全营收
数据库系统编程用什么语言
无限纷争服务器
定制服务器怎么确定安全