python上下文管理器细读

举报
清风Python 发表于 2018/05/10 10:12:46 2018/05/10
【摘要】 test 1上下文管理器,将生成器转化为上下文管理器import contextlib@contextlib.contextmanagerdef a(): print(1) yield print(3)with a() as q: print(2)123456789test 2使用上下文管理器,抽象出异常处理import contextlib@contextlib.c...

test 1

上下文管理器,将生成器转化为上下文管理器

import contextlib@contextlib.contextmanagerdef a():
    print(1)    yield
    print(3)with a() as q:
    print(2)123456789

test 2

使用上下文管理器,抽象出异常处理

import contextlib@contextlib.contextmanagerdef b():
    try:        yield
    except Exception as error:
        print('error:',error)with b():    1/012345678910

test 3

contextlib.closing 的使用时,要求方法中必须存在一个close的方法名称

import contextlibclass c:
    def d(self):
        print('start')    def close(self):
        print('game over!')with contextlib.closing(c()) as c_obj:
    print('contextlib.close()')123456789

test 4

with 完成多个文件的读写操作

with open('a.jpg', 'rb') as from_file, open('b.jpg', 'wb') as to_file:
    to_file.write(from_file.read())


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。