返回StringIO对象

时间:2018-12-21 09:05:40

标签: python python-2.7 python-object

我有以下python代码:

def parse_object(object):
    data = object.read()
    do_other_stuff(data)
def get_object():
    content = "abc"
    try:
        object = StringIO()
        object.write(content)
        return object
    finally:
        object.close()
def main():
    object = get_object()
    parse_object(object)

parse_object获取文件对象或StringIO实例,但是很显然,一旦get_object结束,StringIO对象就会被关闭。
使用get_object之后是否可以关闭该对象?
无法更改parse_object,因为它位于我不想更改的内置库中,而get_object在我的代码中

1 个答案:

答案 0 :(得分:0)

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

上的参考
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)