首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回StringIO对象

返回StringIO对象
EN

Stack Overflow用户
提问于 2018-12-21 09:05:39
回答 1查看 584关注 0票数 1

我有以下python代码:

代码语言:javascript
复制
def parse_object(object):
    data = object.read()
    do_other_stuff(data)
代码语言:javascript
复制
def get_object():
    content = "abc"
    try:
        object = StringIO()
        object.write(content)
        return object
    finally:
        object.close()
代码语言:javascript
复制
def main():
    object = get_object()
    parse_object(object)

parse_object获得一个文件对象或一个StringIO实例,但是很明显,StringIO对象在get_object结束时就会被关闭。

在get_object中使用对象之后,是否有关闭对象的方法?

parse_object不能被修改,因为它在一个内置库中,而我不想修改它,get_object在我的代码中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-21 09:18:16

在Python中,自动关闭是上下文管理器的典型工作。参见https://docs.python.org/2.7/library/contextlib.html#contextlib.closing的参考资料

代码语言:javascript
复制
from contextlib import contextmanager


def parse_object(object):
    data = object.read()
    do_other_stuff(data)

@contextmanager
def get_object():
    content = "abc"
    try:
        object = StringIO()
        object.write(content)
        yield object
    finally:
        object.close()

def main():
    with get_object() as object:
        parse_object(object)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53881886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档