文中關鍵給大家介紹1個Python里的控制模塊:watchdog模塊,它能夠實現監管文件信息轉變。原文中根據實例闡述了watchdog模塊應用,所需的可以了解一下
假定目前還有一個應用領域,必須對文件目錄開展監管,變化時造成系統日志,對新增加文檔做些相對應操作。
例如運用到我們以前的歌曲高潮迭起提取器:若可執行程序下增強了1個音頻文件,監控就啟用歌曲高潮迭起提取器,全自動獲取該音頻文件高潮一部分。
這種監控寫起來并不難,但是非常花費時間,有很多狀況要了解。但是幸虧我們都是寫Python的,有很多車輪子可以用,文中詳細介紹的就是這個名叫watchdog的控制模塊,它可以幫助我們完成以上基本功能。
1.提前準備
開始前,你需要保證Python和pip已成功組裝電腦上,假如沒有,能夠瀏覽文中:超全Python組裝手冊開展組裝。
假如你用了Python的目的是為了數據統計分析,能直接組裝Anaconda,它自帶了Python和pip.
Windows條件下開啟Cmd(逐漸—運作—CMD),ios系統條件下請打開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() #生成監控器對象 observer=Observer() #注冊事件處理器,配置監控目錄 observer.schedule(event_handler,path,recursive=True) #監控器啟動——創建線程 observer.start() #以下代碼是為了保持主線程運行 try: while True: time.sleep(1) except KeyboardInterrupt: observer.stop() #主線程任務結束之后,進入阻塞狀態,一直等待其他的子線程執行結束之后,主線程再終止 observer.join()
可以看到代碼中有幾個關鍵步驟,
1.配置各項信息;
2.生成事件處理器、監控器;
3.注冊事件處理器、配置目錄、遞歸執行(即同時監控子文件夾);
4:啟動。
其實,看門狗的observer是基于threading.Thread對象的,所以observer很多屬性都繼承了threading.Thread的屬性。
如果你不帶參數地運行該腳本,就是要監控腳本文件所在的文件夾,如果要監控其他文件夾,記得運行時帶文件夾的路徑參數,如:
python obserber.py/data/home/ckend/
我們來試著運行看看:
可以看到,我在當前文件夾下做的所有操作都被記錄下來了。接下來我們就試試怎么自定義一些操作。
3.監控文件變化
如果你不知道怎么提取音樂文件的高潮部分,請看這篇文章:《Python自動提取音樂文件高潮》。
要實現這樣的功能,我們有幾種方法,一個是在原來log的處理器上做一些新增修改,比如多增一個函數調用音樂高潮提取器。第二個是重新繼承FileSystemEventHandler類,并做相應的修改。這里我們還是要保留log的樣式,只是在log的時候順便提取音樂高潮,因此采用第一個方法。
看看LoggingEventHandler源代碼中的on_created,這就是當文件創建時監控器的操作:
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() #生成監控器對象 observer=Observer() #注冊事件處理器 observer.schedule(event_handler,path,recursive=True) #監控器啟動——創建線程 observer.start() #以下代碼是為了保持主線程運行 try: while True: time.sleep(1) except KeyboardInterrupt: observer.stop() #主線程任務結束之后,進入阻塞狀態,一直等待其他的子線程執行結束之后,主線程再終止 observer.join()
首先聲明一個類,繼承LoggingEventHandler,然后重載on_created函數,在這個函數中不僅記錄文件事件變化,還要對mp3文件做一次音樂高潮提取。最后別忘了,生成事件處理器時要用我們新的類名。
看看效果,將小永遠.mp3復制過來:
成功監控文件變化并提取到音樂高潮,生成高潮文件。這樣,只要你保持這個Python進程不關閉,它就會一直監控這個文件夾,一旦有音樂文件進入,就會自動提取它的音樂高潮,在linux系統下,可以搭配supervisor使用,非常好用。
綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家帶來幫助。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/128734.html
應用電腦工作時,有時不清楚什么軟件或過程會占有許多資源,造成開展別的任務后發生減緩、卡屏的現象。因而,智能監控系統資源就會變得至關重要。文中用Python撰寫了一臺超治好的RunCat監控應用系統軟件,所需要的可以了解一下 引言 大家好!我就是木木子,近來好懶了哈太熱了.jpg 有空來給大家升級一下啦!今天發布——跟這本文寫姊妹篇哈~ 應用Mac電腦工作時,有時不清楚什么軟件或過程會占...
摘要:更改執行策略可能會產生安全風險,如中的幫助主題所述。如果出現選擇環境,我們選擇。在中,我們僅保留這一段。在中,我們新建一個文件,名為。到此,我們的環境配置就完成了。 在 Visual Studio Code 中配置 Python Flask 環境 本文由 赤石俊哉 原創編寫,您可以在學習交流用途以內自由使用文章。 但是禁止抄襲文章,轉載時,請注明來源地址,謝謝。最后更新時間: 20...
摘要:美國金融行業監管局有的重要應用目前正運行于亞馬遜云端服務上面,其中包括市場監測應用,每年因此節省萬美元的費用。穆林斯負責與金融企業達成新的云服務協議。 配圖:安全性不再是云服務客戶最擔心的事情北京時間3月19日消息,路透社今天撰文指出,對于美國金融公司而言,使用共享云服務的益處是顯而易見的。市場研究公司IDC預計,得益于云服務,到2019年全球較大幾家銀行將節省150億美元的龐大資金,技術基...
摘要:注目前我已經擴展了機器人以便能夠交易以太坊我希望它能夠在不必太多關注的情況下做事,而我想到的第一件事就是為什么不創建一個可以自動進行比特幣和以太坊的簡單交易機器人。在下一個泡沫破裂的時候自動購買比特幣。選擇比特幣以太坊和歐元美元錢包。 我最近得到了Raspberry Pi Zero Wifi,我告訴你這個東西是改變游戲規則的。我之前使用過RasPis,但由于該設備的占地面積小得多,耗電...
摘要:介紹基于等開發的企業級管理系統快速開發腳手架,擁有角色用戶資源管理同時數據更新時關聯的用戶相應的權限也會實時更新,并且此項目會進行持續更新升級,歡迎使用,若對你有幫助請點擊上方的。 介紹 watchdog-framework基于SpringBoot+Shiro+Mybatis+Mybatis-Plus+HikariCP+Redis+Vue+iView等開發的企業級管理系統快速開發腳手架...
閱讀 919·2023-01-14 11:38
閱讀 891·2023-01-14 11:04
閱讀 750·2023-01-14 10:48
閱讀 2039·2023-01-14 10:34
閱讀 956·2023-01-14 10:24
閱讀 833·2023-01-14 10:18
閱讀 506·2023-01-14 10:09
閱讀 583·2023-01-14 10:02