2012-08-09 17 views
14

के साथ फ़ाइल निर्माण का पता लगाएं मैं किसी निर्देशिका में दिए गए नाम वाली फ़ाइल बनाई गई है, तो मैं यह पता लगाने की कोशिश कर रहा हूं। मैं इसे watchdog के लिए धन्यवाद कर रहा हूं। सृजन सही ढंग से पता चला है लेकिन पता नहीं चला कि एक बार पता लगाने के बाद एप्लिकेशन को सही तरीके से कैसे समाप्त किया जाए।वॉचडॉग

कोड का मेरा टुकड़ा निम्नलिखित है:

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

import logging 
import sys 
import time 

from watchdog.events import FileSystemEventHandler 
from watchdog.observers import Observer 

logging.basicConfig(level=logging.ERROR) 

class MyEventHandler(FileSystemEventHandler): 
    def __init__(self, observer, filename): 
     self.observer = observer 
     self.filename = filename 

    def on_created(self, event): 
     print "e=", event 
     if not event.is_directory and event.src_path.endswith(self.filename): 
      print "file created" 
      self.observer.unschedule_all() 
      self.observer.stop() 

def main(argv=None): 
    path = argv[1] 
    filename = argv[2] 

    observer = Observer() 
    event_handler = MyEventHandler(observer, filename) 

    observer.schedule(event_handler, path, recursive=False) 
    observer.start() 
    observer.join() 

    return 0 

if __name__ == "__main__": 
    sys.exit(main(sys.argv)) 

मैं अजगर करने के लिए नया हूँ और मैं समझ नहीं क्या गलत है। पता लगाना एक समर्पित धागे में निर्धारित किया गया है और शामिल() विधि इस धागे को समाप्त करने की प्रतीक्षा कर रही है। इस प्रकार, मुझे लगता है कि मैं पर्यवेक्षक पर प्रतीक्षा/लूपिंग रोकने के लिए सही विधि नहीं बुला रहा हूं, लेकिन वॉचडॉग दस्तावेज़ वास्तव में यह स्पष्ट करने के लिए स्पष्ट नहीं है कि उपयोग की जाने वाली विधियां क्या हैं।

क्या किसी को पता है कि मैं अपना लक्ष्य कैसे प्राप्त कर सकता हूं?

उत्तर

11

आखिरकार, वॉचडॉग कार्यान्वयन को देखने के बाद, को stop से पहले कॉल करना आवश्यक नहीं है, यह स्वचालित रूप से किया जाता है। इस विधि कॉल वाली रेखा को हटाने से समस्या ठीक हो जाती है और एप्लिकेशन पूरी तरह से चल रहा है।

+0

इस अद्यतन को पोस्ट करने के लिए धन्यवाद – jgyou

संबंधित मुद्दे