Подтвердить что ты не робот

Does close() подразумевает flush() в Python?

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

Ответ 3

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) должен очищать все буферы на диске, но он может иметь последствия для всей системы (он синхронизирует все файлы в системе).