Полная версия этой страницы:
Мониторинг директории
Гость_Андрей_*
24.10.2010, 21:35
Привет всем. Столкнулся с проблемой - нужно мониторить директорию в реальном времени и если в ней появляется файл - перемещаем файл в другую директорию.
Вопрос не в том, как переместить файл, а в том как мониторить директорию. По сути нужно что-то типа службы.
Подскажите, кто с таким сталкивался. Заранее благодарен за предложенные решения проблем.
ЗЫ. Использую python, рассмотрю варианты примеров на других языках.
Отдельная просьба - пожалуйста, с описанием.
А что тут такого. По таймеру с нужным интервалом вызываем функцию, получающую список файлов в директории и перемещающей файлы. Можно конечно перехватывать системные функции создания файлов, но это сложнее и не кроссплатформенно (к тому же на питоне такое точно не сделать)
Гость_Андрей_*
24.10.2010, 22:12
Цитата
По таймеру с нужным интервалом вызываем функцию
А пример можно?
Litkevich Yuriy
25.10.2010, 2:48
Цитата(Гость_Гость_Андрей_*_* @ 25.10.2010, 1:12)
А пример можно?
пример будет зависеть от средства разработки и целевой платформы
Гость_Андрей_*
25.10.2010, 9:33
Кроссплатформенное приложение.
Я понимаю, что в QT каждый объект имеет объект time и можно использовать timeout на сигналах и слотах. Но в питоне нет ни сигналов, ни слотов. Собственный вариант:
while 1 :
ls()
sleep(15)
Интервал 15 секунд, но сами согласитесь, что бесконечный цикл - бред.
CodeHunter
25.10.2010, 9:45
Вот юзай и будет тебе хорошо )))
QFileSystemWatcher
The QFileSystemWatcher class provides an interface for monitoring files and directories for modifications.
panter_dsd
25.10.2010, 10:01
Цитата(CodeHunter @ 25.10.2010, 10:45)
Вот юзай и будет тебе хорошо )))
QFileSystemWatcher
The QFileSystemWatcher class provides an interface for monitoring files and directories for modifications.
Цитата
Но в питоне нет ни сигналов, ни слотов.
Эм...
CodeHunter
25.10.2010, 10:05
Цитата(Гость_Гость_Андрей_*_* @ 24.10.2010, 21:35)
рассмотрю варианты примеров на других языках.
напиши на с++ + куте
Гость_Андрей_*
25.10.2010, 12:35
Вот накатал:
# cat ls.py
#!/usr/local/bin/python
import time
import os
while 1:
list = os.listdir('/usr/local/etc/test')
print list
time.sleep(15)
Вопрос - как тогда получить это событие от системы?
Еще раз спасибо за ответ?
Litkevich Yuriy
25.10.2010, 15:49
Андрей, если ты пишешь с использованием PyQt или PySide, то сигналы и слоты там есть.
И вообще если речь о Qt, то и место теме в соответствующем разделе.
Sokoloff
25.10.2010, 15:55
Может тебе нужены
inotify и incron?
Гость_Андрей_*
25.10.2010, 18:37
Вообще я пишу на чистом питоне.
Цитата(Гость_Гость_Андрей_*_* @ 24.10.2010, 21:35)
ЗЫ. Использую python, рассмотрю варианты примеров на других языках.
Sokoloff
26.10.2010, 9:00
Цитата(Гость_Андрей_* @ 25.10.2010, 19:37)
Вообще я пишу на чистом питоне.
Цитата(Гость_Гость_Андрей_*_* @ 24.10.2010, 21:35)
ЗЫ. Использую python, рассмотрю варианты примеров на других языках.
К inotify есть питоновский интерфейс -
http://pyinotify.sourceforge.net.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.