Когда требуется закрыть файл в Python? - PullRequest
2 голосов
/ 10 апреля 2019

Скажите, у меня есть следующий код:

remote = urlopen('www...../file.txt')
with open(file='file', mode='wb') as local:
    local.write(remote.read())

Нужно ли также делать:

local.close()
remote.close()

Как я узнаю, когда нужно close() и когда Python позаботится обо мне?

Ответы [ 2 ]

2 голосов
/ 10 апреля 2019

Если вы используете диспетчер контекста (то есть оператор "with .."), вам не нужно использовать .close.

В этом случае Python управляет ресурсами для вас. Эта - хорошая статья, в которой подробно рассказывается, как она работает.

Рекомендуется использовать контекстные менеджеры всегда, когда это возможно, и вы можете создавать свои собственные, используя библиотеку contextlib .

1 голос
/ 10 апреля 2019

Вам не нужно явно закрывать файл, когда вы используете оператор python with.Таким образом, вы хороши с local объектом.И этот пост объясняет, почему вы должны явно закрывать ресурс remote.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...