Python文件監(jiān)聽

文件監(jiān)聽

一、準(zhǔn)備工作

Windows環(huán)境下打開Cmd(開始—運行—CMD),蘋果系統(tǒng)環(huán)境下請打開Terminal(command+空格輸入Terminal),準(zhǔn)備開始輸入命令安裝依賴。

pip install watchdog

二、基本使用

主要分為以下幾個關(guān)鍵步驟:

  • 1.配置各項信息;

  • 2.生成事件處理器、監(jiān)控器;

  • 3.注冊事件處理器、配置目錄、遞歸執(zhí)行(即同時監(jiān)控子文件夾);

  • 4:啟動。

具體實現(xiàn)代碼如下:

 #encoding=utf-8
 import sys
 import time
 import logging
 from watchdog.observers import Observer
 from watchdog.events import LoggingEventHandler
 
 
 
 if __name__ == '__main__':
  # cmd 輸入 python 腳本地址  監(jiān)聽文件路徑
 
 
  logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
  path = sys.argv[1] if len(sys.argv) > 1 else '.'
 
  # 生成事件處理器對象
  event_handler = LoggingEventHandler()
 
  # 生成監(jiān)控器對象
  observer = Observer()
 
  # 注冊事件處理器,配置監(jiān)控目錄
  observer.schedule(event_handler, path, recursive=True)
 
  # 監(jiān)控器啟動-創(chuàng)建線程
  observer.start()
 
 
  # 以下代碼是為了保證主線程運行
  try:
    while True:
      time.sleep(1)
    except KeyboardInterrupt:
      observer.join()

運行

cmd 輸入:

python F:\PycharmProjects\Pytorch_frame\python\python基礎(chǔ)代碼練習(xí)\文件監(jiān)聽\listen.py e:/test

結(jié)果示意圖如下:

image-20210512143252524

對文件的操作,增加,或者刪除,或者修改,都會有有日志記錄

三、 監(jiān)控文件變化

實現(xiàn)自動提取文件高潮部分

#encoding=utf-8
 import sys
 import time
 import logging
 from watchdog.observers import Observer
 from watchdog.events import LoggingEventHandler
 from pychorus import find_and_output_chorus
 
 
 # 自動提取音樂文件中的高潮部分
 class extractor(LoggingEventHandler):
 
  def on_created(self, event):
  super(LoggingEventHandler, self).on_created(event)
  what = 'directory' if event.is_directory else 'file'
  logging.info('Created %s: %s', what, event.src_path)
  NameExt = event.src_path.split('.')
  if NameExt[-1] == 'mp3':
  logging.info("mp3文件,提取音樂高潮中")
  output_path = "test_high.wav"
  find_and_output_chorus(event.src_path, output_path, 30)
 
 
 if __name__ == '__main__':
  # cmd 輸入 python 腳本地址  監(jiān)聽文件路徑
 
 
  logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
  path = sys.argv[1] if len(sys.argv) > 1 else '.'
 
  # 生成事件處理器對象
  # event_handler = LoggingEventHandler()
  event_handler = extractor()
 
  # 生成監(jiān)控器對象
  observer = Observer()
 
  # 注冊事件處理器,配置監(jiān)控目錄
  observer.schedule(event_handler, path, recursive=True)
 
  # 監(jiān)控器啟動-創(chuàng)建線程
  observer.start()
 
 
  # 以下代碼是為了保證主線程運行
  try:
    while True:
      time.sleep(1)
    except KeyboardInterrupt:
      observer.stop()
 
  observer.join()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容