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. Как видите, третья строка снизу, fp.close()
закрывает открытый ресурс после его использования в любом случае. Это предлагается вам, уже включена в коробку с ConfigParser.read ():)