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

对于数量可变的资源,python的“RAII”习惯用法是什么?,python,file,variables,resources,raii,Python,File,Variables,Resources,Raii,在python中打开数量可变的文件的最佳方法是什么 如果事先不知道文件的数量,我不知道如何使用 从RAII/C++引入,您可以定义自己的上下文管理器,它接受文件名、模式对列表,并返回打开的文件句柄列表,然后在上下文管理器退出时关闭所有这些句柄 有关如何定义自己的上下文管理器的更多详细信息,请参阅和。好的,您可以定义自己的上下文管理器,它接受文件名、模式对列表,并返回打开的文件句柄列表,然后在上下文管理器退出时关闭所有这些句柄 有关如何定义自己的上下文管理器的更多详细信息,请参阅和。对于3.3,c

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

如果事先不知道文件的数量,我不知道如何使用


从RAII/C++

引入,您可以定义自己的上下文管理器,它接受文件名、模式对列表,并返回打开的文件句柄列表,然后在上下文管理器退出时关闭所有这些句柄


有关如何定义自己的上下文管理器的更多详细信息,请参阅和。

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

有关如何定义自己的上下文管理器的更多详细信息,请参阅和。

对于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用户运气不佳。升级的另一个原因。

使用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用户运气不佳。还有另一个升级的原因。

相关的,我无法理解在hand之前未知的文件数量可能意味着什么。你能解释一下这个打开并保持打开未知数量文件的算法吗?例如:一个脚本,它在命令行上获取可变数量的文件名,并将它们逐行交错到stdout。相关的,我无法理解在手之前未知的文件数可能意味着什么。你能解释一下这个打开和保持打开未知数量文件的算法吗?例如:一个脚本,它在命令行上接受一个可变数量的文件名,并将它们逐行交错到标准输出。这完全符合要求。在你清楚地描述和重新阅读上下文管理器文档之后,这看起来非常有用对我来说很明显——现在。所以谢谢你对一个新手的温柔!如果此答案满足您的需要,请单击旁边复选标记的大纲,将其标记为已接受。谢谢这完全符合要求。在你清楚地描述和重新阅读context manager文档之后,这对我来说非常明显——现在。所以谢谢你对一个新手的温柔!如果此答案满足您的需要,请单击旁边复选标记的大纲,将其标记为已接受。谢谢