Не вдаваясь в слишком большую проверку, мне кажется, что before
перезаписывается для каждого файла и всегда будет содержать только значение mtime
для последнего файла в os.listdir()
.
Но на самом деле, зачем вообще нужен before
? Если ваша цель - увидеть, изменился ли файл за последние 3 секунды, просто проверьте это:
import time
check_interval = 3
while True:
now = time.time()
for f in os.listdir(path_to_watch):
last_mod = os.stat(f).st_mtime
if now - last_mod < check_interval: # file changed in last N seconds
print "File {} changed {} sec. ago".format(f, now - last_mod)
time.sleep(check_interval)
(я не тестировал этот код, но концептуально это должно работать).
Кроме того, поскольку вы упомянули, что вы в Windows, обратите внимание на следующее предостережение на stat
из https://docs.python.org/2/library/os.html#os.stat:
Примечание Точное значение и разрешение st_atime, st_mtime и
Атрибуты st_ctime зависят от операционной системы и файла
система. Например, в системах Windows, использующих файл FAT или FAT32
систем, st_mtime имеет разрешение 2 секунды, а st_atime имеет только 1 день
разрешающая способность. Подробности смотрите в документации по вашей операционной системе.