首页 > 编程语言 >python with 上下文管理器

python with 上下文管理器

时间:2024-08-09 17:27:06浏览次数:14  
标签:__ 管理器 python self file 上下文 open

简介

1、什么是上下文管理器?
上下文管理器是一种实现了上下文管理协议(Context Management Protocol)的对象,它通过定义__enter__()__exit__()两个特殊方法来实现资源的获取和释放。上下文管理器通常使用with语句进行调用,确保资源在使用完毕后能够被正确释放。

python中上下文管理器,用于管理资源的获取和释放。以一种简洁且安全的方式来处理资源的打开、关闭和异常处理,使得代码更加可读、可维护,同时增强了程序的健壮性。

2、自定义上下文管理器:

with open('test.txt') as f:
    data = f.readlines()

注:open()函数返回的文件对象是一个上下文管理器,通过with语句来使用它。在代码块执行完毕后,文件对象的__exit__()方法会自动关闭文件,无需手动调用close()方法。

2、自定义上下文管理器

class ContextManager:
    def __init__(self, filename):
        self.filename = filename
        self.open_file = None

    def __enter__(self):
        print(self.filename)
        self.open_file = open(self.filename, 'r')
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        self.open_file.close()

    def read_file(self):
        return self.open_file.readline()


def with_test():
    try:
        with ContextManager("test_file.txt") as cm:
            data = cm.read_file()
            print(data)
    except Exception as e:
        raise e

if __name__ == '__main__':
    with_test()

标签:__,管理器,python,self,file,上下文,open
From: https://www.cnblogs.com/lanjianhua/p/18351113

相关文章

  • 用Python打造精彩动画与视频,9.2 从概念到成品的完整工作流程
     第九章:综合项目9.2从概念到成品的完整工作流程在前面的章节中,我们深入探讨了各种Python技术及其在动画与视频制作中的应用。在本章中,我们将综合运用这些技术,完成一个完整的项目——从初步概念到最终成品的工作流程。这一流程不仅包括技术实现,还涉及规划、设计、测试和发布......
  • 用Python打造精彩动画与视频,9.3 项目案例分享与反思
     第九章:综合项目9.3项目案例分享与反思在本节中,我们将分享几个成功的项目案例,并进行反思总结。这些案例将展示如何将前面所学的Python技术运用于实际项目中,同时我们将讨论项目中的挑战和解决方案,以及从中得到的经验教训。案例一:教育视频制作项目项目简介:本项目旨在为初学......
  • Nuget 管理器》》 error: NU1101: 找不到包 ViewFaceCore
    error:NU1101:找不到包ViewFaceCore错误解释:NU1101错误表示NuGet无法找到名为ViewFaceCore的包。这通常意味着包不存在于指定的源中,或者包名称拼写错误。解决方法:检查包名称:确保ViewFaceCore是正确的包名,没有拼写错误。检查源:确保你的NuGet配置包含了......
  • Linux 进程调度(二)之进程的上下文切换
    目录一、概述二、上下文切换的实现1、context_switch2、switch_mm3、switch_to三、观测进程上下文切换一、概述进程的上下文切换是指在多任务操作系统中,当操作系统决定要切换当前运行的进程时,将当前进程的状态保存起来,并恢复下一个要运行的进程的状态。上下文切换......
  • 为什么 True/False 在 Python 中要大写?
    所有成员都是骆驼案吧?为什么True/False而不是true/false,哪个更宽松?在Python中,True和False使用大写而不是小写,这与语言的禅宗(设计原则)和它们在Python中的特殊地位有关。让我们来分析一下:1.特殊地位:在Python中,True和False......
  • 如何使用 Python 从 Excel 工作表中读取正斜杠
    我有20多列的Excel工作表,如果我想选择不包含文本n/a的行,是否可以将n/a作为文本传递并找到它?我尝试过的代码是,''''将pandas导入为pd进口重新导入操作系统defextract_data(input_file):#读取输入的Excel文件df=pd.read_excel(input_file)#Checkif'......
  • 零基础学习人工智能—Python—Pytorch学习(三)
    前言这篇文章主要两个内容。一,把上一篇关于requires_grad的内容补充一下。二,介绍一下线性回归。关闭张量计算关闭张量计算。这个相对简单,阅读下面代码即可。print("============关闭require_grad==============")x=torch.randn(3,requires_grad=True)print(x)x.requir......
  • python配置pip镜像
    Python配置pip的镜像国内的网络通过pip下载软件包只有不到10k的下载速度。不仅下载的慢,还容易引发超时错误,导致下载失败。而将给pip配置国内的镜像源可以完美的解决这个问题。本文讲解了pip在windows和macos/linux的配置过程(在windows实操成功)一、找到配置文件1.windows在......
  • Pytorch深度学习入门基础(三):python 加载数据初认识
    目录 一、 导入二、数据集中数据和label的组成形式三、Dataset读入数据四、Dataset类代码实战4.1创建函数4.2  设置初始化函数4.3读取每一个图片4.4设置获取数据长度函数4.5创建实例4.5.1单个图片数据集4.5.2 多个图片数据集    现在来开......
  • python多版本共存和虚拟环境
    多版本共存1.调用方式"py-3.10",即可使用对应版本的python虚拟环境1.vscode底部切到CMD,敲"py-3.8-mvenv.venv"(虚拟环境文件夹名,通常用".venv")2.点击vscode右下角,选择虚拟环境作为解释器注:以"."开头的文件在计算机系统中通常被称为隐藏文件。这些文件在许多操作系统中默认是不......