для строки в открытом (имя файла)

Для проектов преобразования (от Visual Basic 6.0), трудно заставить команду переключаться на WPF. Помимо кривой обучения, люди уже привыкли к старому интерфейсу. Windows Forms, хотя будучи постепенно сокращенным, будут вокруг в течение долгого времени все еще.

29
задан Reinstate Monica 25 September 2009 в 19:11
поделиться

4 ответа

имя_файла будет закрыто, когда оно выпадет из области видимости. Обычно на этом заканчивается метод.

Да, лучше использовать с .

Когда у вас есть файловый объект, вы выполняете весь файловый ввод-вывод, вызывая методы этого объекта . [...] Когда вы закончите работу с файлом, вы должны закончить, вызвав метод close для объекта, чтобы закрыть соединение с файлом:

 input.close ()

В коротких сценариях люди часто пропускают этот шаг, так как Python автоматически закрывает файл, когда файловый объект восстанавливается во время сборки мусора (что в обычном Python означает, что файл закрывается почти сразу, хотя другие важные реализации Python, такие как как Jython и IronPython, имеют другие, более расслабленные стратегии сборки мусора). Тем не менее, хорошей практикой программирования является закрытие файлов как можно скорее, и это особенно полезно для более крупных программ, которые в противном случае могут подвергаться большему риску иметь большое количество бесполезно открытых файлов. Обратите внимание, что try / finally особенно хорошо подходит для последующего закрытия файла, даже если функция завершается из-за неперехваченного исключения.

Python Cookbook, стр. 59.

36
ответ дан 28 November 2019 в 01:32
поделиться

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

Я не думаю, что первая закрывает ее.

8
ответ дан 28 November 2019 в 01:32
поделиться

Drop .readlines () . Это избыточно и нежелательно для больших файлов (из-за потребления памяти). Вариант с блоком 'with' всегда закрывает файл.

with open(filename) as file_:
    for line in file_:
        do_something(line)

Когда файл будет закрыт в голом варианте 'for' -loop, зависит от реализации Python.

6
ответ дан 28 November 2019 в 01:32
поделиться

Python собирает мусор - cpython имеет подсчет ссылок и цикл резервного копирования, обнаруживающий сборщик мусора.

Файловые объекты закрывают свой дескриптор файла, когда они удалены / завершены.

Таким образом, в конечном итоге файл будет закрыт, а в cpython закроется, как только цикл for завершится.

3
ответ дан 28 November 2019 в 01:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: