在python中打开可变数量文件的“最佳”方法是什么?
如果事先不知道文件的数量,我无法理解如何使用“with”。
(来自RAII / C ++)
答案 0 :(得分:4)
好吧,您可以定义自己的上下文管理器,它接受(filename, mode)
对列表并返回打开文件句柄列表(然后在上下文管理器退出时关闭所有这些句柄)。
有关如何定义自己的上下文管理器的详细信息,请参阅http://docs.python.org/reference/datamodel.html#context-managers和http://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用户运气不好。升级的另一个原因。