Да, я знаю, что конструкция типа with open(file) as fd: намного интеллигентнее, но я работаю на машине со старым интерпретатором, который, как я понял, with еще не поддерживает.
Вот такой вопрос: читаем содержимое файла одной строкой, минуя прямое использование имени файлового дескриптора. Как в этом случае закрыть файл?
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Stauffenberg
from __future__ import with_statement
ок, спасибо.
Но вопрос все же остается открытым. Через lsof мы можем увидеть, что соединение с файлом все еще не закрыто. Есть ли способ просмотреть все созданные объекты (включая те, на которые нет прямых ссылок), или объекты с типом file?
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
- для версии 2.6+: with и file.close()
- для версии 2.5: from __future__ import with_statement
- для более старых версий Python: file.close(), либо ожидать, когда сборщик мусора сам вызовет деструктор объекта File. Говорят, что в CPython сборщик срабатывает сразу же после того, как счётчик ссылок на объект обнуляется