Ответ 1
Python 3.3 имеет os.sync, см. документы. Источник подтверждает, что это одно и то же.
Для Python 2 вам может потребоваться сделать внешний вызов в системе.
Страница sync man говорит:
sync() заставляет все буферизованные модификации метаданных и данных файла записываться в базовые файловые системы.
Есть ли у Python вызов для этого?
P.S. Не fsync, я вижу это.
Python 3.3 имеет os.sync, см. документы. Источник подтверждает, что это одно и то же.
Для Python 2 вам может потребоваться сделать внешний вызов в системе.
Как уже говорилось, Python 3.3 имеет вызов Python 2.x, поскольку он является простым системный вызов, не требующий передачи данных назад и вперед, вы можете использовать ctypes для вызова:
>>> import ctypes
>>> libc = ctypes.CDLL("libc.so.6")
>>> libc.sync()
0
Объединяя два ответы, я использую следующее в верхней части моего модуля:
if hasattr(os, 'sync'):
sync = os.sync
else:
import ctypes
libc = ctypes.CDLL("libc.so.6")
def sync():
libc.sync()