我有以下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在我的代码中
答案 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)