python手動實現簡易用來打開文件操作的上下文管理器

本博文源於ptthon基礎,主要探討如何手動實現一個建議打開文件操作的上下文管理器

上下文管理器概述

它本質上就是來更好的安全釋放資源有了它,我們更安全操作對象

上下文管理器協議規範

__enter__(self)
__exit__(self,type,value,tb)
前者是進入上下文調用,創建並返回一個可以引用的資源對象給with調用
後者是退出,主要用來釋放資源,可以理解爲清理災難現場。
python的災難現場無非是:需要關閉的文件,需要實現的各種異常處理

使用上下文的with格式:

with context as var:
	pass
其中var就是從__enter__獲得

例子:手動實現打開文件操作的上下文管理器

進入時我們要打開文件,返回打開文件的對象,然後退出時,我們嘗試關閉文件

實驗準備

在項目裏創建一個test.txt,內容爲:

你好,python!

實現效果

在這裏插入圖片描述

實現代碼

class FileMgr(object):

    def __init__(self, filename):
        self.filename = filename
        self.f = None  # 表示打開狀態

    def __enter__(self):
        self.f = open(self.filename, encoding='utf-8')
        return self.f

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


if __name__ == '__main__':
    with FileMgr('test.txt') as f:
        for line in f.readline():
            print(line, end='')

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章