Закрытие файла в python, открытого с помощью ярлыка - PullRequest
0 голосов
/ 06 июля 2011

Я только начинаю с python с lpthw и у меня есть конкретный вопрос для закрытия файла.

Я могу открыть файл с:

input = open(from_file)
indata = input.read()

#Do something

indata.close()

Однако, если я попытаюсь упроститькод в одну строку:

indata = open(from_file).read()

Как закрыть файл, который я открыл, или он уже автоматически закрыт?

Заранее спасибо за помощь!

Ответы [ 2 ]

6 голосов
/ 06 июля 2011

Вы просто должны использовать более одной строки; тем не менее, более питонический способ сделать это будет:

with open(path_to_file, 'r') as f:
    contents = f.read()

Обратите внимание, что с тем, что вы делаете раньше, вы можете пропустить закрытие файла, если было сгенерировано исключение. Здесь оператор 'with' приведет к его закрытию, даже если исключение распространяется из блока 'with'.

1 голос
/ 06 июля 2011

Файлы автоматически закрываются, когда на соответствующую переменную больше нет ссылок.Об этом заботится сборщик мусора Python.

В этом случае вызов open() создает объект File, для которого запускается метод read().После выполнения метода никакой ссылки на него не существует, и он закрывается (по крайней мере, к концу выполнения скрипта).

Хотя это работает, это не очень хорошая практика.Всегда лучше явно закрыть файл или (еще лучше) следовать предложению другого ответа.

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