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