博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python的上下文管理器
阅读量:2770 次
发布时间:2019-05-13

本文共 1172 字,大约阅读时间需要 3 分钟。

class Resource():    def __enter__(self):        print('===connect to resource===')        return self    def __exit__(self, exc_type, exc_val, exc_tb):        print('===close resource connection===')        return True #告诉python解释器异常已处理        return False #告诉python解释器抛出异常    def operate(self):        1/0import contextlib@contextlib.contextmanagerdef open_func(file_name):    # __enter__方法    print('open file:', file_name, 'in __enter__')    file_handler = open(file_name, 'r')    try:        yield file_handler # yield后相当于__exit__    except Exception as exc:        # deal with exception        raise Exception(str(exc))        print('the exception was thrown: {}'.format(str(exc)))    finally:        print('close file:', file_name, 'in __exit__')        file_handler.close()        returnimport osfrom functools import partialfile_path = os.path.dirname(os.path.abspath(__file__))get_file_path = partial(os.path.join, file_path)print(get_file_path("deploy.sh"))if __name__ == "__main__":    with open_func(get_file_path("deploy.sh")) as file_in:        for line in file_in:            # 1/0            print(line)    # with Resource() as res:    #     res.operate()

 

转载地址:http://xsfld.baihongyu.com/

你可能感兴趣的文章
vue init深度定制团队自己的Vue template
查看>>
在Vue项目里面使用d3.js
查看>>
深入浅析js原型链和vue构造函数
查看>>
vue 配置多页面应用的示例代码
查看>>
基于Vue实现图片在指定区域内移动的思路详解
查看>>
vue单页缓存方案分析及实现
查看>>
vue中各种通信传值方式总结
查看>>
JS遍历数组的三种方法map、forEach与filter实例详解
查看>>
vuex实现及简略解析(小结)
查看>>
从0到1构建vueSSR项目之路由的构建
查看>>
JavaScript中的事件与异常捕获详析
查看>>
centos中如何创建一个txt文件
查看>>
useradd 无法打开 /etc/passwd
查看>>
Centos7修改root密码
查看>>
VMWare安装Centos7下载和安装教程
查看>>
CentOS7使用DevStack快速搭建OpenStack实验环境
查看>>
CentOS7 关闭防火墙
查看>>
CentOS 7 minimal 版本安装后网络配置
查看>>
python编程入门教程下载-Python编程从入门到实践的PDF教程免费下载
查看>>
用python画四叶草-python turtle工具绘制四叶草的实例分享
查看>>