当前位置: 首页 > news >正文

学习之上下文管理器

one_file = open('demo.txt', 'w')
one_file.write("xxxxx")
# raise ValueError  # 如果抛出异常将会报错
one_file.close()
with open('demo.txt', 'w') as f:  # open--返回的是IO--IO中实现了__enter__方法和__exit__方法f.write("aaaa")
class MyContextManger:def __init__(self, filename, mode, encoding='utf-8'):self.filename, self.mode, self.encoding = filename, mode, encodingdef __enter__(self):self.file_obj = open(self.filename, mode=self.mode, encoding=self.encoding)return self.file_objdef __exit__(self, exc_type, exc_val, exc_tb):  # 如果with语句出现异常的时候会接收# exc_type:异常的类型# exc_val:异常的值# exc_tb:异常的回溯# 如果返回None,则表示上下文管理器自己处理异常,即我们认为异常已经处理完毕了,Python解释器不会将异堂传递给上层代码。# 如果返回True,则表示上下文管理器已经成功处理了异常,并且异常已经被处理完毕了,Python解释器不会将弃常传递给上层代码。# 如果返回False或其他任意非空值,则表示上下文管理器没有成功处理异常,Python解释器会将异常传递给上层代码继续处理。self.file_obj.close()if __name__ == '__main__':with MyContextManger("demo.txt", "w") as mm:  # MyContextManger()创建对象会直接调用__init__方法mm.write("sssss")

with上下文管理器就是实现了 enter,__exit__方法


http://www.mrgr.cn/news/52295.html

相关文章:

  • 提供综合康复服务的武汉自闭症全托管学校
  • 记一次有趣的发现-绕过堡垒机访问限制
  • 如何排查CPU占用率过高的问题
  • Redis过期Key的逐出策略
  • 潜水定位通信系统的功能和使用方法_鼎跃安全
  • JDBC的学习
  • 一个标准java程序的创建和使用
  • Oracle 常见索引扫描方式概述,哪种索引扫描最快!
  • DHCP和VRRP协议
  • 公司名称抖音头条百科创建包过包收录
  • 数据结构-B树和B+树
  • 《云端守望者》
  • 视频去水印软件3款推荐:好用的去水印软件分享!
  • FreeRTOS - 中断管理
  • Creo7.0软件安装教程+Creo7.0三维建模中文安装包下载
  • Okhttp3中设置超时的方法
  • 如何使用内网穿透工具配置Termux SFTP公网地址实现WinSCP远程连接
  • 纯干货:C语言中函数栈帧的介绍
  • FFmpeg源码:avformat_new_stream函数分析
  • 1.项目初始化