Python 中 WITH 语句的用途是什么?
在本文中,我们将学习 Python 中的 “ with ” 语句及其用途。
- Python 中的 with 语句用简便的方式替换了 try-catch 代码块。
-
更重要的是,它确保在处理后立即关闭资源。
-
读写文件是使用 with 语句的常见用途。
-
上下文管理器是支持 with 语句的函数或类。上下文管理器使您可以在需要时立即打开和关闭资源。
-
例如,open() 函数就是一种上下文管理器。当使用 with 语句调用 open() 函数时,文件在处理后会自动关闭。
阅读更多:Python 教程
使用“with”语句打开和读取文件
算法(步骤)
执行所需任务的算法/步骤如下所示−
- 使用 open() 函数(以文件名和模式作为参数打开文件并返回文件对象)以只读模式打开文本文件(此处 “ r ” 表示只读模式)。
- 使用 readlines() 函数获取给定文本文件的行列表。
- 使用 for 循环遍历给定文本文件的每一行。
-
打印相应的文本文件行。
示例
输出
with 关键字不仅可以在读模式下打开文件,还可以为打开的文件分配别名。
使用“with”语句替换 try-catch 代码块
在 Python 中,您可以使用 try-catch 错误处理打开和写入文件。
with 语句在幕后用下面的方式替换了 try-catch 代码块。
示例
输出
该程序打开了文件 tutorialsFile.txt 。如果不存在该文件,程序则会创建该文件。然后,该代码将 Hello tutorialsPoint python 写入该文件,然后关闭该文件。
这种方法没有问题。但是,使用 with 语句可以更加优雅地实现该功能。
现在,让我们使用 with 语句来重新创建上述示例 −
这简化了代码,因为 with 语句可以在使用文件后处理关闭文件的操作。因此,通常使用 with 语句是在 Python 中打开文件的首选技术。
Python “with”语句和上下文管理器
在处理文件时,你可能认为 with 语句只适用于 open() 函数。但是,情况并非如此。还可以创建支持 with 语句的类和对象。
上下文管理器是支持 with 语句的类或函数。
如果你想在项目中增加资源管理,可以使用上下文管理器。要成为 上下文管理器 ,一个类必须实现以下两个方法 −
- enter()
- exit()
实现这些方法后,就可以在该类的对象上使用 with 语句。
- 当调用 with 语句时,enter() 方法被调用。
-
当退出 with 块的作用域时,exit() 方法被调用。
创建一个文件写入上下文管理器
该类与 open() 方法的功能相同
以上程序使用方法
- 使用 FileWriter(filename) 创建了新的 FileWriter 对象并调用了 enter() 方法。
-
enter() 方法用于初始化想要的资源。在此场景下,它打开了一个文本文件。它还必须返回资源的描述符,因此它返回打开的文件。
-
使用 as file 将文件分配给变量文件。
-
在冒号后,将在获取资源后执行的代码放入 with 块中。
-
当该代码执行完成时,exit() 方法将自动调用。在此情况下,它关闭了文件。
如何编写上下文管理器方法?
先前编写的上下文管理器是类,但如果您想创建与open()函数相似的上下文管理器方法该怎么办?Python还允许您编写上下文管理器方法。
使用 contextlib 模块将方法转换为上下文管理器。
示例
exampleFile.txt
在这里,我们创建了一个新函数,并用with关键字命名。当我们调用该函数时,它会尝试以写入模式打开指定的文件并返回结果。如果发生错误,文件将被关闭。
结论
我们在本文中学习了如何使用with语句和示例。