Каталоги раскладки: Как не забирать файлы, которые все еще пишутся?

У меня есть сценарий Python, который проверяет каталог раскладки и обрабатывает все найденные файлы, а затем удаляет их.

Как я могу убедиться, что не забираю файл, который все еще записывается процессом, который помещает файлы в этот каталог?

Мой тестовый пример довольно прост. Я копирую и вставляю 300 МБ файлов в каталог раскладки, и часто скрипт захватывает файл, который все еще пишется. Он работает только с частичным файлом, а затем удаляет его. Это вызывает ошибку операции с файлом в ОС, так как файл, в который он производил запись, исчез.

  • Я попытался заблокировать файл (с помощью модуля FileLock) перед тем, как открыть / обработать / удалить его. Но это не помогло.

  • Я подумал о том, чтобы проверить время модификации файла, чтобы избежать чего-либо в течение X секунд. Но это кажется неуклюжим.

Мой тест на OSX, но я пытаюсь найти решение, которое будет работать на основных платформах.

Я вижу здесь похожий вопрос ( Как проверить, записывается ли файл? ), но четкого решения не было.

Спасибо

6
задан Community 23 May 2017 в 10:33
поделиться