亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Python運用watchdog模塊監(jiān)管文檔轉(zhuǎn)變

89542767 / 657人閱讀

  文中關(guān)鍵給大家介紹1個Python里的控制模塊:watchdog模塊,它能夠?qū)崿F(xiàn)監(jiān)管文件信息轉(zhuǎn)變。原文中根據(jù)實例闡述了watchdog模塊應用,所需的可以了解一下


  假定目前還有一個應用領域,必須對文件目錄開展監(jiān)管,變化時造成系統(tǒng)日志,對新增加文檔做些相對應操作。


  例如運用到我們以前的歌曲高潮迭起提取器:若可執(zhí)行程序下增強了1個音頻文件,監(jiān)控就啟用歌曲高潮迭起提取器,全自動獲取該音頻文件高潮一部分。


  這種監(jiān)控寫起來并不難,但是非?;ㄙM時間,有很多狀況要了解。但是幸虧我們都是寫Python的,有很多車輪子可以用,文中詳細介紹的就是這個名叫watchdog的控制模塊,它可以幫助我們完成以上基本功能。


  1.提前準備


  開始前,你需要保證Python和pip已成功組裝電腦上,假如沒有,能夠瀏覽文中:超全Python組裝手冊開展組裝。


  假如你用了Python的目的是為了數(shù)據(jù)統(tǒng)計分析,能直接組裝Anaconda,它自帶了Python和pip.


  Windows條件下開啟Cmd(逐漸—運作—CMD),ios系統(tǒng)條件下請打開Terminal(command+空格符鍵入Terminal),即將開始輸入指令組裝依靠。


  自然,我更建議大家用VSCode在線編輯器,把文中編碼Copy下來,在在線編輯器下方終端設備運行指令組裝依靠控制模塊,多舒適的一件事情啊


  在終端設備鍵入下列指令組裝大家所需的依靠控制模塊:


  pip install watchdog

  看到Successfully installed xxx則說明安裝成功。


  2.基本使用


  看門狗的使用并不復雜,請認真看以下代碼和注釋:


  import sys
  import time
  import logging
  from watchdog.observers import Observer
  from watchdog.events import LoggingEventHandler
  if __name__=="__main__":
  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.stop()
  #主線程任務結(jié)束之后,進入阻塞狀態(tài),一直等待其他的子線程執(zhí)行結(jié)束之后,主線程再終止
  observer.join()

  可以看到代碼中有幾個關(guān)鍵步驟,


  1.配置各項信息;


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


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


  4:啟動。


  其實,看門狗的observer是基于threading.Thread對象的,所以observer很多屬性都繼承了threading.Thread的屬性。


  如果你不帶參數(shù)地運行該腳本,就是要監(jiān)控腳本文件所在的文件夾,如果要監(jiān)控其他文件夾,記得運行時帶文件夾的路徑參數(shù),如:

  python obserber.py/data/home/ckend/


  我們來試著運行看看:

01.png

  可以看到,我在當前文件夾下做的所有操作都被記錄下來了。接下來我們就試試怎么自定義一些操作。


  3.監(jiān)控文件變化


  如果你不知道怎么提取音樂文件的高潮部分,請看這篇文章:《Python自動提取音樂文件高潮》。


  要實現(xiàn)這樣的功能,我們有幾種方法,一個是在原來log的處理器上做一些新增修改,比如多增一個函數(shù)調(diào)用音樂高潮提取器。第二個是重新繼承FileSystemEventHandler類,并做相應的修改。這里我們還是要保留log的樣式,只是在log的時候順便提取音樂高潮,因此采用第一個方法。


  看看LoggingEventHandler源代碼中的on_created,這就是當文件創(chuàng)建時監(jiān)控器的操作:


  class LoggingEventHandler(FileSystemEventHandler):
  """Logs all the events captured."""
  
  #...省略其他源代碼...
  
  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)


  我們僅需要繼承這個類并對on_created進行修改,就能完成我們想要的功能:


  #Python實用寶典
  #2019/12/29
  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="."+"".join(NameExt[:-1])+'_high.wav'
  find_and_output_chorus(event.src_path,output_path,30)
  if __name__=="__main__":
  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=extractor()
  #生成監(jiān)控器對象
  observer=Observer()
  #注冊事件處理器
  observer.schedule(event_handler,path,recursive=True)
  #監(jiān)控器啟動——創(chuàng)建線程
  observer.start()
  #以下代碼是為了保持主線程運行
  try:
  while True:
  time.sleep(1)
  except KeyboardInterrupt:
  observer.stop()
  #主線程任務結(jié)束之后,進入阻塞狀態(tài),一直等待其他的子線程執(zhí)行結(jié)束之后,主線程再終止
  observer.join()


  首先聲明一個類,繼承LoggingEventHandler,然后重載on_created函數(shù),在這個函數(shù)中不僅記錄文件事件變化,還要對mp3文件做一次音樂高潮提取。最后別忘了,生成事件處理器時要用我們新的類名。


  看看效果,將小永遠.mp3復制過來:


  成功監(jiān)控文件變化并提取到音樂高潮,生成高潮文件。這樣,只要你保持這個Python進程不關(guān)閉,它就會一直監(jiān)控這個文件夾,一旦有音樂文件進入,就會自動提取它的音樂高潮,在linux系統(tǒng)下,可以搭配supervisor使用,非常好用。


  綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家?guī)韼椭?/p>

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/128734.html

相關(guān)文章

  • 依據(jù)Python撰寫1個監(jiān)管CPU的軟件系統(tǒng)

      應用電腦工作時,有時不清楚什么軟件或過程會占有許多資源,造成開展別的任務后發(fā)生減緩、卡屏的現(xiàn)象。因而,智能監(jiān)控系統(tǒng)資源就會變得至關(guān)重要。文中用Python撰寫了一臺超治好的RunCat監(jiān)控應用系統(tǒng)軟件,所需要的可以了解一下  引言  大家好!我就是木木子,近來好懶了哈太熱了.jpg  有空來給大家升級一下啦!今天發(fā)布——跟這本文寫姊妹篇哈~  應用Mac電腦工作時,有時不清楚什么軟件或過程會占...

    89542767 評論0 收藏0
  • 在 Visual Studio Code 中配置 Python Flask 環(huán)境

    摘要:更改執(zhí)行策略可能會產(chǎn)生安全風險,如中的幫助主題所述。如果出現(xiàn)選擇環(huán)境,我們選擇。在中,我們僅保留這一段。在中,我們新建一個文件,名為。到此,我們的環(huán)境配置就完成了。 在 Visual Studio Code 中配置 Python Flask 環(huán)境 本文由 赤石俊哉 原創(chuàng)編寫,您可以在學習交流用途以內(nèi)自由使用文章。 但是禁止抄襲文章,轉(zhuǎn)載時,請注明來源地址,謝謝。最后更新時間: 20...

    gself 評論0 收藏0
  • 美國金融公司因使用云服務省了數(shù)十億美元

    摘要:美國金融行業(yè)監(jiān)管局有的重要應用目前正運行于亞馬遜云端服務上面,其中包括市場監(jiān)測應用,每年因此節(jié)省萬美元的費用。穆林斯負責與金融企業(yè)達成新的云服務協(xié)議。 配圖:安全性不再是云服務客戶最擔心的事情北京時間3月19日消息,路透社今天撰文指出,對于美國金融公司而言,使用共享云服務的益處是顯而易見的。市場研究公司IDC預計,得益于云服務,到2019年全球較大幾家銀行將節(jié)省150億美元的龐大資金,技術(shù)基...

    Winer 評論0 收藏0
  • PHP和樹莓派開發(fā)一個比特幣/以太坊交易機器人

    摘要:注目前我已經(jīng)擴展了機器人以便能夠交易以太坊我希望它能夠在不必太多關(guān)注的情況下做事,而我想到的第一件事就是為什么不創(chuàng)建一個可以自動進行比特幣和以太坊的簡單交易機器人。在下一個泡沫破裂的時候自動購買比特幣。選擇比特幣以太坊和歐元美元錢包。 我最近得到了Raspberry Pi Zero Wifi,我告訴你這個東西是改變游戲規(guī)則的。我之前使用過RasPis,但由于該設備的占地面積小得多,耗電...

    ShowerSun 評論0 收藏0
  • watchdog-framework基于SpringBoot+Shiro+Mybatis等開發(fā)的企業(yè)

    摘要:介紹基于等開發(fā)的企業(yè)級管理系統(tǒng)快速開發(fā)腳手架,擁有角色用戶資源管理同時數(shù)據(jù)更新時關(guān)聯(lián)的用戶相應的權(quán)限也會實時更新,并且此項目會進行持續(xù)更新升級,歡迎使用,若對你有幫助請點擊上方的。 介紹 watchdog-framework基于SpringBoot+Shiro+Mybatis+Mybatis-Plus+HikariCP+Redis+Vue+iView等開發(fā)的企業(yè)級管理系統(tǒng)快速開發(fā)腳手架...

    caiyongji 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<