Для проектов преобразования (от Visual Basic 6.0), трудно заставить команду переключаться на WPF. Помимо кривой обучения, люди уже привыкли к старому интерфейсу. Windows Forms, хотя будучи постепенно сокращенным, будут вокруг в течение долгого времени все еще.
имя_файла
будет закрыто, когда оно выпадет из области видимости. Обычно на этом заканчивается метод.
Да, лучше использовать с
.
Когда у вас есть файловый объект, вы выполняете весь файловый ввод-вывод, вызывая методы этого объекта . [...] Когда вы закончите работу с файлом, вы должны закончить, вызвав метод
close
для объекта, чтобы закрыть соединение с файлом:input.close ()
В коротких сценариях люди часто пропускают этот шаг, так как Python автоматически закрывает файл, когда файловый объект восстанавливается во время сборки мусора (что в обычном Python означает, что файл закрывается почти сразу, хотя другие важные реализации Python, такие как как Jython и IronPython, имеют другие, более расслабленные стратегии сборки мусора). Тем не менее, хорошей практикой программирования является закрытие файлов как можно скорее, и это особенно полезно для более крупных программ, которые в противном случае могут подвергаться большему риску иметь большое количество бесполезно открытых файлов. Обратите внимание, что
try
/finally
особенно хорошо подходит для последующего закрытия файла, даже если функция завершается из-за неперехваченного исключения.
с частью
лучше, потому что после этого файл закрывается.
Вам даже не нужно использовать readlines ()
. для строки в файле
достаточно.
Я не думаю, что первая закрывает ее.
Drop .readlines ()
. Это избыточно и нежелательно для больших файлов (из-за потребления памяти). Вариант с блоком 'with'
всегда закрывает файл.
with open(filename) as file_:
for line in file_:
do_something(line)
Когда файл будет закрыт в голом варианте 'for'
-loop, зависит от реализации Python.
Python собирает мусор - cpython имеет подсчет ссылок и цикл резервного копирования, обнаруживающий сборщик мусора.
Файловые объекты закрывают свой дескриптор файла, когда они удалены / завершены.
Таким образом, в конечном итоге файл будет закрыт, а в cpython закроется, как только цикл for завершится.