首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用WatchDog忽略文件

用WatchDog忽略文件
EN

Stack Overflow用户
提问于 2014-03-29 20:28:24
回答 1查看 5.5K关注 0票数 1

我正在运行以下代码,该代码在Python中实现WatchDog以监视文件更改。我试图跟踪日志文件( DoNotDelete.txt )中的所有更改,因此在代码中试图忽略这个DoNotDelete.txt文件。但是,当我试图运行它(首先通过向文件传递'n‘,然后通过更改文件)时,我得到了一个ValueError (ValueError:冲突模式set(['*']),包括并排除了)。

代码语言:javascript
复制
import sys
import time
import os
import logging
from watchdog.observers import Observer
from watchdog.events import PatternMatchingEventHandler

class MyHandler(PatternMatchingEventHandler):

    currentEvent = ""
    update = False

    def on_modified(self, event):
        super(MyHandler, self).on_modified(event)
        what = 'Directory' if event.is_directory else 'File'
        self.currentEvent = what + ", modified, " + event.src_path
        if(self.update == False):
            file = open("DoNotDelete.txt", "a+")
            file.write(self.currentEvent + "\n")
            file.close()
        else:
            print self.currentEvent

    def on_created(self, event):
        super(MyHandler, self).on_created(event)
        what = 'Directory' if event.is_directory else 'File'
        self.currentEvent = what + ", created, " + event.src_path
        if(self.update == False):
            file = open("DoNotDelete.txt", "a+")
            file.write(self.currentEvent + "\n")
            file.close()
        else:
            print self.currentEvent

    def on_deleted(self, event):
        super(MyHandler, self).on_deleted(event)
        what = 'Directory' if event.is_directory else 'File'
        self.currentEvent = what + ", deleted, " + event.src_path
        if(self.update == False):
            file = open("DoNotDelete.txt", "a+")
            file.write(self.currentEvent + "\n")
            file.close()
        else:
            print self.currentEvent

    def on_moved(self, event):
        super(MyHandler, self).on_moved(event)
        what = 'Directory' if event.is_directory else 'File'
        self.currentEvent = what + ", moved, from: " + event.src_path + ", to: " + \ 
        event.dest_path
        if(self.update == False):
            file = open("DoNotDelete.txt", "a+")
            file.write(self.currentEvent + "\n")
            file.close()
        else:
            print self.currentEvent

    def get_boolean(self, bool):
        self.update = bool

if __name__ == "__main__":
    booleanUpdate = False
    updateOrNot = raw_input("Would you like to enable auto-update (y/n): ")
    if((len(updateOrNot) == 1) and (updateOrNot.lower() == "y")):
        booleanUpdate = True
    event_handler = MyHandler(ignore_patterns='*.txt')
    event_handler.get_boolean(booleanUpdate)
    observer = Observer()
    observer.schedule(event_handler, path='.', recursive=True)
    observer.start()
    print booleanUpdate
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()

关于如何避免这个错误,有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-16 14:07:11

我想你应该用一个列表来描述模式。

代码语言:javascript
复制
class MyHandler(PatternMatchingEventHandler):

  currentEvent = ""
  update = False

  def __init__(self):
      super(MyHandler, self).__init__(ignore_patterns=["*/DoNotDelete.txt"])

  def doExtractMethods(self):
      if (self.update == False):
          file_ = open("DoNotDelete.txt", "a+")
          file_.write(self.currentEvent + "\n")
          file_.close()
      else:
          print self.currentEvent

  def on_modified(self, event):
      super(MyHandler, self).on_modified(event)
      what = 'Directory' if event.is_directory else 'File'
      self.currentEvent = what + ", modified, " + event.src_path
      self.doExtractMethods()

  def on_created(self, event):
      super(MyHandler, self).on_created(event)
      what = 'Directory' if event.is_directory else 'File'
      self.currentEvent = what + ", created, " + event.src_path
      self.doExtractMethods()

  def on_deleted(self, event):
      super(MyHandler, self).on_deleted(event)
      what = 'Directory' if event.is_directory else 'File'
      self.currentEvent = what + ", deleted, " + event.src_path
      self.doExtractMethods()

  def on_moved(self, event):
      super(MyHandler, self).on_moved(event)
      what = 'Directory' if event.is_directory else 'File'
      self.currentEvent = what + ", moved, from: " + event.src_path + ", to: "\
                          + event.dest_path
      self.doExtractMethods()

  def get_boolean(self, bool):
      self.update = bool

注意ignore_patterns=["*/DoNotDelete.txt"]

Monitoring a single filehttps://github.com/gorakhargosh/watchdog/issues/99

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22736481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档