ConfigParser.read(filenames)
实际上会为您解决这个问题。
在编码时,我遇到了这个问题,发现自己问自己同样的问题:
阅读基本上意味着我也必须在完成后关闭此资源,对吗?
我阅读了您在此处获得的答案,建议您自己打开文件并config.readfp(fp)
用作替代方案。我查看了文档,发现确实没有ConfigParser.close()
. 因此,我进行了更多研究并阅读了 ConfigParser 代码实现本身:
def read(self, filenames):
"""Read and parse a filename or a list of filenames.
Files that cannot be opened are silently ignored; this is
designed so that you can specify a list of potential
configuration file locations (e.g. current directory, user's
home directory, systemwide directory), and all existing
configuration files in the list will be read. A single
filename may also be given.
Return list of successfully read files.
"""
if isinstance(filenames, basestring):
filenames = [filenames]
read_ok = []
for filename in filenames:
try:
fp = open(filename)
except IOError:
continue
self._read(fp, filename)
fp.close()
read_ok.append(filename)
return read_ok
这是read()
来自 ConfigParser.py 源代码的实际方法。如您所见,从底部算起的第 3 行在fp.close()
任何情况下都会在使用后关闭打开的资源。这是提供给您的,已经包含在 ConfigParser.read() 的框中:)