2011-05-13 9 views
5

मुझे किसी भी इनपुट में दिए गए किसी भी इनपुट या किसी भी बदलाव के लिए किसी फ़ाइल में मौजूद किसी भी बदलाव के लिए देखना है, मुझे उसी फ़ोल्डर में स्थित एक पायथन प्रोग्राम चलाने की आवश्यकता है।फ़ाइल पर किसी भी संशोधन पर प्रोग्राम चलाने के लिए pyinotify कैसे बनाना है?

मैंने समझने के लिए अपनी पूरी कोशिश की लेकिन मुझे कोई अच्छा परिणाम नहीं मिल रहा है। यदि कोई इस से मेरी सहायता कर सकता है तो यह बहुत मददगार होगा।

आप .. धन्यवाद :)

उत्तर

9
import pyinotify,subprocess 
def onChange(ev): 
    cmd = ['/bin/echo', 'File', ev.pathname, 'changed'] 
    subprocess.Popen(cmd).communicate() 
wm = pyinotify.WatchManager() 
wm.add_watch('file.watched', pyinotify.IN_MODIFY, onChange) 
notifier = pyinotify.Notifier(wm) 
notifier.loop() 

फ़ाइल आप देखना चाहते हैं के साथ आदेश आप निष्पादित करने के लिए चाहते हैं और file.watched साथ cmd बदलें, जाहिर है।

+0

मैं एक अजगर कार्यक्रम तो मैं कुछ इस तरह जगह के चलाने के लिए है: 'अजगर my_prog। py = ['/ bin/echo', 'फ़ाइल', ev.pathname, 'बदला'] '?? –

+0

@ भुवन राज नहीं, 'cmd = ['/usr/bin/env ',' पायथन ',' ./my_prog.py ', ev.pathname] ' – phihag

+0

बहुत धन्यवाद :) :) :) :) यह काम कर रहा है। मुझे खुशी होगी अगर आप समझा सकते हैं कि ev.pathname क्या पैरामीटर सूची में करता है। –

2

http://schettino72.wordpress.com/tag/inotify/

से मैं छदाम करने के लिए कुछ inotify अच्छाई जोड़ने पर काम कर रहा हूँ। इसके लिए मैं एक बार और एक प्राप्त करना चाहता हूं, हर बार एक फ़ाइल संशोधित होने पर अधिसूचना। Inotify फ़ाइल सिस्टम को देखने का कड़ी मेहनत करता है और Pyinotify एक पायथन इंटरफ़ेस प्रदान करता है। लेकिन जैसा कि मैंने उम्मीद की थी इसका उपयोग सीधे आगे नहीं था। समस्या यह है कि संपादक अपने तरीके से फ़ाइलों का उपयोग करते हैं ...

जब मैंने "गूंज" का उपयोग किया तो यह ठीक काम करता था। लेकिन जब मैंने Emacs के साथ प्रयास किया तो मुझे 3 अधिसूचनाएं मिलीं। वीआईएम के साथ यह भी सबसे खराब था, मुझे कोई सूचनाएं और त्रुटि संदेश नहीं मिला!

phihag

का उत्कृष्ट उदाहरण
wm.add_watch('file.watched', pyinotify.IN_MODIFY, onChange) 

हो सकता है हो रही है:

wm.add_watch('file.watched', pyinotify.IN_CLOSE_WRITE, onChange) 
संबंधित मुद्दे

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