[python] open()与with open()
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[python] open()与with open()相关的知识,希望对你有一定的参考价值。
参考技术A20181122 qzd
这样直接打开文件,如果出现异常(如,读取文件过程中文件不存在),则直接出现错误,close命令无法执行,文件无法关闭。
好处: 用with语句的好处就是到达语句末尾时会自动关闭文件,即使出现异常。
with语句实际上是一个非常通用的结构,允许你使用所谓的上下文管理器。上下文管理器是支持两个方法的对象:_ enter_ 和 _ exit_ 。
方法_ enter_ 不接受任何参数,在进入with语句时被调用,其返回值被赋给关键字as后面的变量。
方法_ exit_ 接受三个参数:异常类型、异常对象和异常跟踪。它在离开方法时被调用(通过前述参数将引发的异常提供给它)。如果_ exit_ 返回False,将抑制所有的异常。
文件也可用作上下文管理器。它们的方法_ enter_ 返回文件对象本身,而方法_ exit_ 关闭文件。
with语句作用效果相当于上面的try-except-finally
Python利用上下文实现类似with open功能
import contextlib @contextlib.contextmanager def myopen(file, mode): f = open(file, mode, encoding="utf-8") try: yield f finally: f.close() with myopen("01-thread.py", ‘r‘) as f: print(f.read())
这里使用Python contextlib模块模拟了我们常用的with open功能,这里使用了contextlib.contextmanager装饰器,不能缺失!
本文出自 “戴柏阳的博客” 博客,请务必保留此出处http://daibaiyang119.blog.51cto.com/3145591/1964018
以上是关于[python] open()与with open()的主要内容,如果未能解决你的问题,请参考以下文章
软件测试中,python 中 open与with open 的区别?
如何在 Python 中使用“with open”打开多个文件?
区别 |Python的 open() 和with open() as