我有以下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实例,但是很明显,StringIO对象在get_object结束时就会被关闭。
在get_object中使用对象之后,是否有关闭对象的方法?
parse_object不能被修改,因为它在一个内置库中,而我不想修改它,get_object在我的代码中。
发布于 2018-12-21 09:18:16
在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)https://stackoverflow.com/questions/53881886
复制相似问题