Вот общее решение, которое при вызове будет НАВСЕГДА ждать, пока пройденный каталог не будет изменен. Эта функция может быть вызвана перед любым кодом, который будет работать с каталогом, например, подсчитывать, сколько файлов и т. Д. Она может использоваться для блокировки выполнения до изменения dir:
def directory_modified(dir_path, poll_timeout=30):
import os
import time
init_mtime = os.stat(dir_path).st_mtime
while True:
now_mtime = os.stat(dir_path).st_mtime
if init_mtime != now_mtime:
return True
time.sleep(poll_timeout)
Обратите внимание, что вы можете перезаписать тайм-аут, по умолчанию 30 секунд. Вот используемая функция:
>>> att_dir = '/data/webalert/attachments'
>>> directory_modified(att_dir, 5) # Some time goes by while I modify the dir manually
True
Функция возвращает истину максимум через 5 секунд выполнения в случае, если сон начался, как только я изменил каталог. Надеюсь, это поможет тем, кто нуждается в общем подходе.