Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Мониторинг директории
Форум на CrossPlatform.RU > Разработка > С\С++
Гость_Андрей_*
Привет всем. Столкнулся с проблемой - нужно мониторить директорию в реальном времени и если в ней появляется файл - перемещаем файл в другую директорию.
Вопрос не в том, как переместить файл, а в том как мониторить директорию. По сути нужно что-то типа службы.

Подскажите, кто с таким сталкивался. Заранее благодарен за предложенные решения проблем.
ЗЫ. Использую python, рассмотрю варианты примеров на других языках.
Отдельная просьба - пожалуйста, с описанием.
Kagami
А что тут такого. По таймеру с нужным интервалом вызываем функцию, получающую список файлов в директории и перемещающей файлы. Можно конечно перехватывать системные функции создания файлов, но это сложнее и не кроссплатформенно (к тому же на питоне такое точно не сделать)
Гость_Андрей_*
Цитата
По таймеру с нужным интервалом вызываем функцию

А пример можно? :blush:
Litkevich Yuriy
Цитата(Гость_Гость_Андрей_*_* @ 25.10.2010, 1:12) *
А пример можно?
пример будет зависеть от средства разработки и целевой платформы
Гость_Андрей_*
Кроссплатформенное приложение.
Я понимаю, что в QT каждый объект имеет объект time и можно использовать timeout на сигналах и слотах. Но в питоне нет ни сигналов, ни слотов. Собственный вариант:
while 1 :
ls()
sleep(15)

Интервал 15 секунд, но сами согласитесь, что бесконечный цикл - бред.
CodeHunter
Вот юзай и будет тебе хорошо )))

QFileSystemWatcher
The QFileSystemWatcher class provides an interface for monitoring files and directories for modifications.
panter_dsd
Цитата(CodeHunter @ 25.10.2010, 10:45) *
Вот юзай и будет тебе хорошо )))

QFileSystemWatcher
The QFileSystemWatcher class provides an interface for monitoring files and directories for modifications.


Цитата
Но в питоне нет ни сигналов, ни слотов.

Эм...
CodeHunter
Цитата(Гость_Гость_Андрей_*_* @ 24.10.2010, 21: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
Андрей, если ты пишешь с использованием PyQt или PySide, то сигналы и слоты там есть.

И вообще если речь о Qt, то и место теме в соответствующем разделе.
Sokoloff
Может тебе нужены inotify и incron?
Гость_Андрей_*
Вообще я пишу на чистом питоне.
Цитата(Гость_Гость_Андрей_*_* @ 24.10.2010, 21:35) *
ЗЫ. Использую python, рассмотрю варианты примеров на других языках.

Sokoloff
Цитата(Гость_Андрей_* @ 25.10.2010, 19:37) *
Вообще я пишу на чистом питоне.
Цитата(Гость_Гость_Андрей_*_* @ 24.10.2010, 21:35) *
ЗЫ. Использую python, рассмотрю варианты примеров на других языках.



К inotify есть питоновский интерфейс - http://pyinotify.sourceforge.net.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.