В Python 2.7.x как проверить, что запись файла выполняется на диск после .close ()? - PullRequest
0 голосов
/ 08 июня 2018

Я пишу инструмент на Python 2.7.x для Windows 10 / server 2016. Как часть моей программы я пишу файл переменного размера (может быть 1 КБ, может быть 1 ГБ или что-нибудь!), И у меня былопроблема, когда вещи, которые происходят после того, как я вызываю myFile.close (), сталкиваются с проблемой, когда файл еще не был полностью записан на диск, но даже считается, что .close () был вызван и возвращен (без многопоточности или многопроцессорной обработки).здесь).

Каков наилучший способ в Python 2.7.x в системе Windows 10 / server2016 проверить, что все содержимое файла, которое я хотел перенести на диск, действительно завершило запись на этот диск?

Я знаю, что time.sleep (1) помогает, но это произвольно, и я не знаю, насколько на самом деле скорость записи на диск (диапазон от 1 МБ / с до 3 ГБ / с), и файлможет быть довольно большим!Поэтому мне нужно что-то менее произвольное, чтобы проверить, что весь файл был полностью записан на диск, прежде чем мой инструмент перейдет к следующему шагу.

1 Ответ

0 голосов
/ 08 июня 2018

Вы должны позвонить fd.flush(), затем os.fsync(fd), , прежде чем закроет файл.Справка: https://docs.python.org/2/library/os.html#files-and-directories

...