python中如何使用Context Managers上下文管理器
发表于:2024-11-19 作者:千家信息网编辑
千家信息网最后更新 2024年11月19日,本篇文章给大家分享的是有关python中如何使用Context Managers上下文管理器,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧
千家信息网最后更新 2024年11月19日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安全错误
数据库的锁怎样保障安全
hp服务器导轨
网络安全手抄报不带字
数据库媒体教学系统
广西网络安全工程师职称评定
软件开发VS网络安全
尉氏百事通网络技术有限公司
智嵌串口服务器plc
海康服务器管理口密码是什么
如何关闭某个数据库
加油平台软件开发
淮安高性能服务器直销
导航仪软件开发方案
湖北企业软件开发零售价格
用c写图书管理系统数据库
镇雄县乾坤软件开发有限公司
网络技术主要包含哪些具体内容
金凤区软件开发
计算机网络技术中的问题
asp数据库显示表的信息
仙居软件开发商
unity 数据库
蚂蚁金服底层数据库
数据库 安全 总结
阿里巴巴服务器内存卡
电商数据库技术知识点总结
电池系统属于软件开发么
软件开发画图
数据库实训课程报告前台后台
小米手机当服务器
jxl 大数据库