Форум сайта python.su
0
всем привет
задача такая, есть папка где время от времени появляется файлы (другая программа или пользователь не важно должен обработать фалы скажем в течении 60 мин ) имена и время появления файлов произвольно
Надо как-то мониторит файлы так чтобы если файл не обработался течение 60 мин то выполним некое действие
решение задачи так представляю
1) получаем список файлов в каталоге
2)имена файлов делам переменными
3) каждую минуту еще раз проверяем каталог если файл в каталоге остался то инкриминируем переменную с тем же именем и проверяем если значение равно 60 то “alert”
застрял на втором пункте как список имен преобразовать в переменные
import os
directory = ‘D:\temp’
files = os.listdir(directory)
print (files) // список файлов
//??
PS заранее извиняюсь если задаю глупые вопросы , я в программировании совсем новичок
Отредактировано vuln (Авг. 25, 2015 14:27:44)
Офлайн
857
>>> files = ['file1.txt', 'file2.txt', 'file3.txt'] >>> >>> dct = dict.fromkeys(files, 0) >>> dct {'file2.txt': 0, 'file3.txt': 0, 'file1.txt': 0} >>> dct['file1.txt'] += 1 >>> dct {'file2.txt': 0, 'file3.txt': 0, 'file1.txt': 1} >>>
Офлайн
253
vulnмодуль os.stat позволяет получить время создания файла и время его последней модификации.
Надо как-то мониторит файлы
Офлайн
0
doza_andне атрибуты файлов не катить атрибуты тоже произвольные (файл может создан и изменен больше часа назад) надо отталкиваться с момента появления файла в каталоге.
Из постановки задачи не ясно насколько быстро после окончания интервала 60 минут вы должны обнаружить эту ситуацию? Может можно в конце рабочего дня все подчистить?
Отредактировано vuln (Авг. 25, 2015 17:48:25)
Офлайн
253
Все равно непонятно. Отклонение от 60 минут на 1 микросекунду критично?
vuln
(файл может создан и изменен больше часа назад) надо отталкиваться с момента появления файла в каталоге.
Отредактировано doza_and (Авг. 25, 2015 22:38:42)
Офлайн
25
inotify
Офлайн
253
vuln
directory = ‘D:\temp’
s0rgЭто не Lunix.
inotify
Отредактировано doza_and (Авг. 27, 2015 12:03:33)
Офлайн
25
doza_andПропустил видимо.
Это не Lunix.
doza_andДа - есть. Но этот API намного более неудобный.
В винде тоже есть
doza_andС короткоживущими файлами не пробовал ее, но судя по докам - да, не будут.
Т.е. временные файлы не будут детектироваться?
Офлайн
0
import os, time path_to_watch = "c:\\temp\\" before = dict ([(f, 0) for f in os.listdir (path_to_watch)]) while 1: time.sleep (3) after = dict ([(f, 0) for f in os.listdir (path_to_watch)]) added = [f for f in after if not f in before] removed = [f for f in before if not f in after] if added: before.update(added) #добавить новую пару в словарь (не работает) if removed: before.pop(removed) # удалить пару из словаря (не работает) for x in before: before[x] += 1 if before[x] == 100: print ('Alarm!!!!') print (before)
Отредактировано vuln (Авг. 28, 2015 16:16:56)
Офлайн