Важно ли вызывать close() для файла, открытого с помощью open(), если Flush() вызывается после каждой операции write()?Python

Программы на Python
Anonymous
Важно ли вызывать close() для файла, открытого с помощью open(), если Flush() вызывается после каждой операции write()?

Сообщение Anonymous »

Я читал, что важно вызывать close() для файла, который был открыт с помощью open(filename, 'w'|'a'), потому что в противном случае в открытый файл вносятся изменения файл не может быть сохранен. Я считаю, что это связано с буферизацией.
Насколько я понимаю, нельзя полагаться на механизм GC для правильного закрытия открытого файла, поскольку он не переносим между различными интерпретаторами Python.
Я также понимаю, что близкий эквивалент RAII реализован с использованием контекстов.
Например, следующий контекст with автоматически вызывает close()< /code>, когда область применения оператора with заканчивается.

Код: Выделить всё

with open(filename, 'w') as ofile:
# pass
# ofile.close() called automatically (literally, or effectively?)
Изменится ли ситуация, если после каждого вызова .write() мы будем вызывать .flush()? В этом контексте по-прежнему необходимо/важно/целесообразно (при необходимости удалить) также явно вызывать .close() вместо того, чтобы оставлять открытый файл для последующей сборки мусора?

Подробнее здесь: https://stackoverflow.com/questions/787 ... if-flush-i

Вернуться в «Python»