【python】上下文管理之with自定义open

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import  contextlib#引入上下文管理包
@contextlib.contextmanager #给函数引入装饰器
def myopen(dir,mode):
    print("开始")
    f=open(dir,mode,encoding='utf-8')
    try:#上文
        yield f
    finally:#下文
        print("结束")
        f.close()

with myopen("./Thread-2.txt",'r') as fobj:#把try中的yield中的f赋值给fobj
    #with会将with后面的函数中的yield赋值给fobj
    for i in fobj:
        print(i)
    #等待上面的循环结束后,才最终执行finally的代码,所以这就是上下文管理

 

posted @ 2017-07-17 10:09  丰study  阅读(239)  评论(0)    收藏  举报