对于可变数量的资源,什么是python“RAII”习语?

时间:2012-01-28 01:11:45

标签: python file variables resources raii

在python中打开可变数量文件的“最佳”方法是什么?

如果事先不知道文件的数量,我无法理解如何使用“with”。

(来自RAII / C ++)

2 个答案:

答案 0 :(得分:4)

好吧,您可以定义自己的上下文管理器,它接受(filename, mode)对列表并返回打开文件句柄列表(然后在上下文管理器退出时关闭所有这些句柄)。

有关如何定义自己的上下文管理器的详细信息,请参阅http://docs.python.org/reference/datamodel.html#context-managershttp://docs.python.org/library/contextlib.html

答案 1 :(得分:0)

使用3.3时,contextlib.ExitStack现在可用于此类情况。以下是contextlib文档中的一些示例代码:

with ExitStack() as stack:
    files = [stack.enter_context(open(fname)) for fname in filenames]
    # All opened files will automatically be closed at the end of
    # the with statement, even if attempts to open files later
    # in the list raise an exception

2.7用户运气不好。升级的另一个原因。