Python在safe mann中关闭一个文件数组

2024-04-18 17:36:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一系列文件:

    part_files = [open(name, "w+") for name in part_names]
    ...
    [part.close() for part in part_files]

我想以有保证的方式关闭它们,即使两者之间有例外。在

我想知道这两种方法。据我所知,contextlib.nested在3.0中不推荐使用


Tags: 文件方法nameinforclosenames方式
2条回答

这个怎么样:

part_files = []
try:
  for name in part_names:
    part_files.append(open(name, "w+"))
  ... do stuff ...
finally:
  for part in part_files:
    part.close()

如果在打开文件时引发异常,它仍将关闭到目前为止已打开的所有文件

在Python3.3+中,可以使用^{}。 在Python2(或Python3的旧版本)中,可以使用contextlib2.ExitStack,它可以与一起安装

pip install contextlib2

^{pr2}$

相关问题 更多 >