[python] open()与with open()

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[python] open()与with open()相关的知识,希望对你有一定的参考价值。

参考技术A

20181122 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”打开多个文件?

python3 文件操作with open()方法用法解析

区别 |Python的 open() 和with open() as

Python中open和with open有什么区别?怎么用?

python3 with open()用法