Страницы

Поиск по вопросам

среда, 12 декабря 2018 г.

Поток ввода/вывода: почему нет ошибки при работе с файлами без явного их закрытия

Пробую такие конструкции:
file = open('file.txt').read() open('copy_file.txt', 'w').write(file)
Почему-то все работает... Из опыта работы с другими языками я ожидал увидеть некоторые странности в связи с открытыми потоками (я их не закрываю), но все отлично работает. Даже при многократном запуске. И не похоже, что есть проблема утечки памяти. Почему так ? В документации ничего не нашел на эту тему...


Ответ

У вас память используется только для хранения содержимого file.txt в переменной file.
А открытые потоки закрываются и собираются сборщиком мусора сразу как заканчивается чтение или запись, так как у вас нет ссылок на эти объекты.
Про сборку можно почитать по этой ссылке: http://arctrix.com/nas/python/gc/

Комментариев нет:

Отправить комментарий