成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

89542767 / 588人閱讀

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


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


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


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


  1.提前準(zhǔn)備


  開始前,你需要保證Python和pip已成功組裝電腦上,假如沒有,能夠?yàn)g覽文中:超全Python組裝手冊(cè)開展組裝。


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


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


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


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


  pip install watchdog

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


  2.基本使用


  看門狗的使用并不復(fù)雜,請(qǐng)認(rèn)真看以下代碼和注釋:


  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'.'
  #生成事件處理器對(duì)象
  event_handler=LoggingEventHandler()
  #生成監(jiān)控器對(duì)象
  observer=Observer()
  #注冊(cè)事件處理器,配置監(jiān)控目錄
  observer.schedule(event_handler,path,recursive=True)
  #監(jiān)控器啟動(dòng)——?jiǎng)?chuàng)建線程
  observer.start()
  #以下代碼是為了保持主線程運(yùn)行
  try:
  while True:
  time.sleep(1)
  except KeyboardInterrupt:
  observer.stop()
  #主線程任務(wù)結(jié)束之后,進(jìn)入阻塞狀態(tài),一直等待其他的子線程執(zhí)行結(jié)束之后,主線程再終止
  observer.join()

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


  1.配置各項(xiàng)信息;


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


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


  4:啟動(dòng)。


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


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

  python obserber.py/data/home/ckend/


  我們來試著運(yùn)行看看:

01.png

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


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


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


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


  看看LoggingEventHandler源代碼中的on_created,這就是當(dāng)文件創(chuàng)建時(shí)監(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)


  我們僅需要繼承這個(gè)類并對(duì)on_created進(jìn)行修改,就能完成我們想要的功能:


  #Python實(shí)用寶典
  #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'.'
  #生成事件處理器對(duì)象
  event_handler=extractor()
  #生成監(jiān)控器對(duì)象
  observer=Observer()
  #注冊(cè)事件處理器
  observer.schedule(event_handler,path,recursive=True)
  #監(jiān)控器啟動(dòng)——?jiǎng)?chuàng)建線程
  observer.start()
  #以下代碼是為了保持主線程運(yùn)行
  try:
  while True:
  time.sleep(1)
  except KeyboardInterrupt:
  observer.stop()
  #主線程任務(wù)結(jié)束之后,進(jìn)入阻塞狀態(tài),一直等待其他的子線程執(zhí)行結(jié)束之后,主線程再終止
  observer.join()


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


  看看效果,將小永遠(yuǎn).mp3復(fù)制過來:


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


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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/128734.html

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

    caiyongji 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<