Python上下文管理器用法及实例解析
这篇文章主要介绍了Python上下文管理器用法及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
with上下文管理器
语法:with ... as ... 如:with open('test.txt', 'r') as fp,打开一个文件作为文件句柄对象赋值给fp
with是一个语句块,上下文管理器中里面实现了两个方法:enter, exit,enter是进入代码块前自动调用的方法,exit是
退出with语句块时调用的,例如,文件对象在退出上下文管理器时调用了exit中的self.close()语句,所以就不用手动去关闭文件
只要重写了enter方法和exit两个方法,就可以自定义一个with上下文管理器
class SayHello(object): def __init__(self, text): self.text = text def __enter__(self): return self #必须返回对象 def __exit__(self, exc_type, exc_value, traceback): self.text = "Bye!" with SayHello("Hello") as greet: print(greet.text) print(greet.text)
输出:
Hello Bye!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
Python with关键字,上下文管理器,@contextmanager文件操作示例
本文实例讲述了Python with关键字,上下文管理器,@contextmanager文件操作.分享给大家供大家参考,具体如下: demo.py(with 打开文件): # open 方法的返回值赋值给变量 f,当离开 with 代码块的时候,系统会自动调用 f.close() 方法 # with 的作用和使用 try/finally 语句是一样的. with open("output.txt", "r") as f: f.write("XXXXX&qu
-
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
本文实例讲述了Python上下文管理器类和上下文管理器装饰器contextmanager用法.分享给大家供大家参考,具体如下: 一. 什么是上下文管理器 上下文管理器是在Python2.5之后加入的功能,可以在方便的需要的时候比较精确地分配和释放资源, with便是上下文管理器的最广泛的应用, 比如: with open("test/test.txt","w") as f: f.write("hello") 这上会比使用try:...finall
-
Python中的上下文管理器和with语句的使用
Python2.5之后引入了上下文管理器(context manager),算是Python的黑魔法之一,它用于规定某个对象的使用范围.本文是针对于该功能的思考总结. 为什么需要上下文管理器? 首先,需要思索下为什么需要引入上下文管理器. 在正常情况下,管理各种系统资源(如文件).数据库连接时,通常是先打开这些资源,执行完相应的业务逻辑,最后关闭资源. 举两个例子: 1.使用Python打开一个文件写入内容,之后需要关闭这个文件.如果不正常关闭的话可能会在文件操作时出现异常,因为系统允许你打开的
-
Python上下文管理器全实例详解
Python上下文管理器 简介 最近用到这个,仔细了解了一下,感觉是十分有用的,记录一下 使用场景 当我们需要获取一个临时打开的资源,并在使用完毕后进行资源释放和异常处理,利用try-catch语句可以完成,举个例子. 打开文件: f = None try: print("try") f = open("__init__.py", "r") print(f.read()) except Exception as e: print("ex
-
Python中的上下文管理器相关知识详解
前言 with 这个关键字,对于每一学习Python的人,都不会陌生. 操作文本对象的时候,几乎所有的人都会让我们要用 with open ,这就是一个上下文管理的例子.你一定已经相当熟悉了,我就不再废话了. with open('test.txt') as f: print f.readlines() 什么是上下文管理器? 基本语法 with EXPR as VAR: BLOCK 先理清几个概念 1. 上下文表达式:with open('test.txt') as f: 2. 上下文管理器:o
-
Python上下文管理器用法及实例解析
这篇文章主要介绍了Python上下文管理器用法及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 with上下文管理器 语法:with ... as ... 如:with open('test.txt', 'r') as fp,打开一个文件作为文件句柄对象赋值给fp with是一个语句块,上下文管理器中里面实现了两个方法:enter, exit,enter是进入代码块前自动调用的方法,exit是 退出with语句块时调用的,例如,文件对象
-
python 上下文管理器及自定义原理解析
这篇文章主要介绍了python 上下文管理器原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Python 提供了 with 语法用于简化资源操作的后续清除操作,是 try/finally 的替代方法,实现原理建立在上下文管理器之上. Python 提供了一个 contextmanager 装饰器,更进一步简化上下管理器的实现方式. 上下文管理器是Python2.5之后才出现的概念.上下文管理器规定了某个对象的使用范围,当进入或者离开了使
-
python爬虫调度器用法及实例代码
我们一般使用爬虫看到的都是最后的数据结果,对于整个的获取过程没有过多了解过.对于初学python的小伙伴们来说,不光是代码的练习,还是原理的分析都是必不可少的. 小编把整个爬取的过程分为了几个部分,从一开始的下载,到数据的去重解析,再到整个爬虫循环的结束,以图片和代码的双重形式展现给大家,希望能够对爬虫调度器有一个深刻的理解. 我们可以编写几个元件,每个元件完成一项功能,下图中的蓝底白字就是对这一流程的抽象: UrlManager:将存储和获取url以及url去重的几个步骤在url管理器中完成(
-
python上下文管理器异常问题解决方法
对于异常的使用上,当我们在捕捉到错误时,会有一个抛出的选项让我们做决定.不过加入了上下文管理器后,就不用对异常进行选择了,因为其作用是不必抛出.下面我们就python上下文管理器处理异常进行说明,分析其中的三个参数,最后带来一个处理异常的实例供大家进行学习. 1.异常说明 异常可以在__exit__ 进行捕获并由你自己决定如何处理,是抛出还是不抛出.在__exit__ 里返回 True(没有return 就默认为 return False),就相当于告诉 Python解释器,这个异常我们已经捕获
-
python上下文管理的使用场景实例讲解
1.上下文管理的使用场景 凡是要在代码块前后插入代码的场景,这点和装饰器类似. 资源管理类:申请和回收,包括打开文件.网络连接.数据库连接等: 权限验证. 2.实例 >>> with Context(): ... raise Exception # 直接抛出异常 ... enter context exit context Traceback (most recent call last): File "/usr/local/python3/lib/python3.6/site
-
Python上下文管理器Content Manager
在 Python 中,我们会经常听到上下文管理器(Context Manager),那我们探讨下这是什么,又有什么功能. 在 Python 中的上下文管理器中,使用 with 打开文件是使用最多的,其中离开 with 包含的语句后会执行一些类似于清理的工作,如关闭文件,关闭连接对象等操作. 实践 我们在代码实践的时候,忽略了在同一代码片段中,先打开文件,然后直接对文件进行其他处理,因为这样没有任何意义,资源是处于被占用的情况. 先看下面检测的代码: #!/usr/bin/env python #
-
Python上下文管理器实现方法总结
目录 什么时候可以考虑上下文管理器 方法1(上下文管理器协议) 方法2(@contextmanager) 方法3(contextlib.closing()) 什么时候可以考虑上下文管理器 当你的代码逻辑需要用到如下关键字时,可以考虑使用上下文管理器让你的代码更加优雅: try: ... finally: ... 接下来介绍实现上下文管理器的三种方法. 方法1(上下文管理器协议) 总所周知,open()是默认支持上下文管理器的.所以打开一个txt文件,并向里面写入内容,再关闭这个文件的代码可以这样
-
python上下文管理器协议的实现
目录 前言 todo:版本1 todo:版本2 前言 在上下文管理器协议的过程中,涉及到两个魔术方法__enter__方法 和 __exit__方法 在python中所有实现了上下文管理器协议的对象 都可以用使用with操作 with启动了对象的上下文管理器 上下文管理器协议: __enter__方法: 进入enter方法返回的结果被as后面的变量接收 exit: 退出with中所有的语句执行完毕执行 执行 exit 实现一个简单的文件操作来看下上下文管理器协议: class MyOpen:
随机推荐
- 超级简易的JS计算器实例讲解(实现加减乘除)
- 用JSP编写文件上传
- 使用AngularJS 跨站请求如何解决jsonp请求问题
- Spring + Mybatis 项目实现动态切换数据源实例详解
- 基于JS实现简单的样式切换效果代码
- 解决iis7.5服务器上.net 获取不到https页面的信息
- C#中调用MySQL存储过程的方法
- PHP程序员常见的40个陋习,你中了几个?
- 详解Nginx服务器中HTTP Headers相关的模块配置使用
- java StringBuilder类的详解及简单实例
- jQuery Select下拉框操作小结(推荐)
- jQuery+HTML5+CSS3制作支持响应式布局时间轴插件
- android实现简单的画画板实例代码
- FluorineFx.NET的认证(Authentication )与授权(Authorization)Flex与.NET互操作 九
- PHP提高编程效率的20个要点
- 高手总结分析如果利用baidu分词算法分析之二(转)
- python机器学习理论与实战(四)逻辑回归
- js中数组常用方法总结(推荐)
- selenium+python自动化测试之页面元素定位
- Hibernate hql查询代码实例