«Старая» версия кода внутри вашего блока try / Кроме того, будет:
out = open(txtFile, 'w')
for line in gzipHandler:
out.write(line)
out.close()
Диспетчер контекста with open() ...
- фактически то же самое. Python автоматически закрывает файлы, когда их объекты собираются сборщиком мусора (подробности см. question 575278 ), поэтому out
будет закрыто, когда функция, по которой он работает, по какой-то причине прекращает выполнение. Кроме того, ОС закроет файл, когда процесс Python завершится, если он по какой-либо причине завершится сбоем, прежде чем будет выполнено out.close()
.
Диспетчер контекста with open()
расширится примерно до:
out = open(txtFile, 'w')
try:
for line in gzipHandler:
out.write(line)
finally:
out.close()
См. Приведенную выше ссылку на "менеджер контекста" для объяснения. Итак, как это работает? Он открывает файл, выполняет ваш блок кода, а затем явно закрывает файл. Как работает «старая» версия, которую я описываю? Он открывает файл, выполняет ваш блок кода, а затем неявно закрывает файл, когда завершается его область действия или когда завершается процесс Python.
Сохранение, но для "явных" и "неявных" частей, функциональность идентична.