В другом ответе здесь, который использует contextlib для определения пользовательской "открытой" функции для использования с with
, contextmanager
из contextlib используется для определите функцию, которая обрабатывает открытие и потоковую передачу данных и, наконец, закрытие потока.
Узнав об этом, я вижу, что есть также функция closing
, которая, кажется, работает аналогично, с особым акцентом на закрытие потока по завершении.
Я понимаю, как работает представленная конструкция contextmanager
(явно закрывая поток по мере необходимости), но мне интересно, не является ли она неполной - для корректности (и для Pythonic), следует ли также использовать closing
или предпочтительнее?
Изменить: тот ответ, на который я ссылался, в настоящее время вызывает fh.close() - мне интересно, должен ли каким-то образом closing
быть здесь каким-то образом вместо этого. Документация по contextlib
не помогла мне в этом вопросе «или-или-оба», поэтому этот вопрос.