Вопрос

В Python и вообще - делает close() операция над файловым объектом подразумевает flush() операция?

Это было полезно?

Решение

Да.Он использует базовый close() функция, которая делает это за вас (источник).

Другие советы

Примечание: close() и flush() не гарантирует, что данные на диске действительно безопасны.Это просто гарантирует, что в ОС есть данные ==, что они не буферизуются внутри процесса.

Вы можете попробовать синхронизировать или fsync, чтобы записать данные на диск.

Да, в Python 3 это наконец-то в официальной документации, но это уже имело место в Python 2 (см. Ответ Мартина).

filehandle.close не обязательно сбрасывается.Удивительно, но filehandle.flush тоже не помогает — он все равно может застревать в буферах ОС во время работы Python.Посмотрите на этот сеанс, где я написал в файл, закрыл его и Ctrl-Z открыл командную строку оболочки и проверил файл:

$  cat xyz
ghi
$ fg
python

>>> x=open("xyz","a")
>>> x.write("morestuff\n")
>>> x.write("morestuff\n")
>>> x.write("morestuff\n")
>>> x.flush
<built-in method flush of file object at 0x7f58e0044660>
>>> x.close
<built-in method close of file object at 0x7f58e0044660>
>>> 
[1]+  Stopped                 python
$ cat xyz
ghi

Впоследствии я могу снова открыть файл, и это обязательно синхронизирует файл (потому что в этом случае я открываю его в режиме добавления).Как говорили другие, системный вызов синхронизации (доступный из пакета os) должен сбрасывать все буферы на диск, но это может иметь последствия для общесистемной производительности (он синхронизирует все файлы в системе).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top