中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么掌握在Python中監控文件系統的技術

發布時間:2021-10-18 15:03:06 來源:億速云 閱讀:138 作者:iii 欄目:編程語言

這篇文章主要講解了“怎么掌握在Python中監控文件系統的技術”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么掌握在Python中監控文件系統的技術”吧!

看門狗watch dog

通過閱讀本文,您將了解如何檢測對Python應用程序中現有文件所做的更改。我們將使用一個維護良好的模塊,叫做看門狗(watchdog)。基于官方文檔,watchdog是一個用于監視文件系統事件的Python  API庫和shell實用程序。

它同時支持Python 2.7和3.4+。但是,對于舊版本,建議您使用watchdog < 0.10.0。在本教程中,我將只介紹Python  API庫。讓我們繼續下一節,開始安裝必要的模塊。

設置

設置是相當簡單和直接的pip安裝。在繼續之前,強烈建議設置一個虛擬環境。有兩種方法

安裝在PyPI

在終端中運行如下命令。

pip install watchdog

它將安裝PyPI(在撰寫本文時為0.10.2)的最新版本。

從代碼庫安裝

此外,您可以在本地文件夾中克隆存儲庫并正常安裝它。首先,讓我們使用以下命令克隆它。

git clone --recursive git://github.com/gorakhargosh/watchdog.git

使用以下命令更改工作目錄。確保它在工作目錄中包含一個名為setup.py的文件。

cd watchdog

運行以下命令安裝它。

pip install -e.

直接從存儲庫克隆它的一個主要優點是,您可以獲得帶有附加特性的最新版本。

您可以在終端中運行以下命令來驗證安裝是否成功。

pip show watchdog

讓我們繼續下一節并開始編寫Python代碼。

實現

watchdog的主要構建模塊基于以下類:

  • 觀察者

  • 事件處理程序

因此,實現就像這樣簡單:

  1. 鴻蒙官方戰略合作共建——HarmonyOS技術社區

  2. 創建一個watchdog.observers的實例。觀察者線程類。

  3. 使用自己的實現定義事件處理程序的子類,并從中創建實例。

  4. 通過附加事件處理程序的觀察者實例調用調度函數。它接受一些其他輸入參數,比如要監視的目錄的路徑。

  5. 啟動觀察者線程并等待它生成事件,這些事件將觸發事件處理程序中的代碼。

事件處理程序

當前模塊中有4種類型的事件處理程序可用:

  1. 鴻蒙官方戰略合作共建——HarmonyOS技術社區

  2. FileSystemEventHandler&mdash;可以覆蓋其中方法的基本文件系統事件處理程序。

  3. PatternMatchingEventHandler&mdash;&mdash;用與正在發生的事件相關的文件路徑匹配給定的模式。

  4. RegexMatchingEventHandler -匹配給定的正則表達式和與發生事件相關的文件路徑。

  5. LoggingEventHandler&mdash;記錄捕獲的所有事件。

其余的類繼承自FileSystemEventHandler,它提供了以下函數供我們重寫。

  • on_any_event -捕獲所有事件處理程序。

  • on_created -創建文件或目錄時調用。

  • on_deleted -當文件或目錄被刪除時調用。

  • on_modified -當文件或目錄被修改時調用。

  • on_moved -當文件或目錄被移動或重命名時調用。

導入

創建一個新的Python文件,并添加以下導入聲明。我把它命名為test.py。

from watchdog.observers import Observer from watchdog.events import FileSystemEventHandler

FileSystemEventHandler的子類

創建一個繼承自FileSystemEventHandler的新類,并根據用例相應地覆蓋這些函數。我將把它命名為MyHandler,但你可以隨意命名它。

class MyHandler(FileSystemEventHandler):     def on_any_event(self, event):         print(event.event_type, event.src_path)      def on_created(self, event):         print("on_created", event.src_path)      def on_deleted(self, event):         print("on_deleted", event.src_path)      def on_modified(self, event):         print("on_modified", event.src_path)      def on_moved(self, event):         print("on_moved", event.src_path)

用實現的邏輯替換print語句。對于每個函數,它都有一個名為event的輸入參數,該參數包含以下變量:

  • event_type&mdash;字符串形式的事件類型。默認為沒有。

  • is_directory -如果為目錄觸發事件,則為True;否則錯誤。

  • src_path&mdash;觸發此事件的文件系統對象的源路徑。

最有用的參數是src_path,您可以在其中使用它來確定哪個文件被修改,然后再運行相應的邏輯。

if(event.src_path == "./path/file.txt"):     print("Execute your logic here!")

觀察者和事件

一旦你創建了子類,你就可以和觀察者類一起安全地創建它的實例了。為監視過程分配您所選擇的路徑。我將檢查一個新創建的名為json的文件夾。您可以根據自己的喜好修改它。

您也可以設置recursive遞歸參數,但強烈建議預先定義層次結構并將其設置為false,以防止權限不足或無法訪問子文件夾的問題。

調用start將運行該線程,當您在相應的路徑中進行修改時,將生成一個事件。

event_handler = MyHandler() observer = Observer() observer.schedule(event_handler, path='./json/', recursive=False) observer.start()

測試

為了測試它,你必須實現一個正在運行的循環來防止它退出。退出一個KeyboardInterrupt異常時,調用stop函數來清理資源。

while True:     try:         pass     except KeyboardInterrupt:         observer.stop()

保存Python文件并在終端中運行它。根據您設置的名稱修改名稱。

python test.py

您可以通過創建一個新文檔、修改其中的內容并從目錄中刪除它來輕松地測試它。

感謝各位的閱讀,以上就是“怎么掌握在Python中監控文件系統的技術”的內容了,經過本文的學習后,相信大家對怎么掌握在Python中監控文件系統的技術這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长岛县| 柏乡县| 金溪县| 深泽县| 东平县| 西和县| 仁怀市| 南宁市| 惠州市| 东阳市| 紫云| 确山县| 新疆| 明溪县| 江城| 宝丰县| 灯塔市| 马关县| 密山市| 临沧市| 东乌| 磐安县| 吉安市| 桃园市| 固阳县| 尤溪县| 漳浦县| 新沂市| 莆田市| 万州区| 庆云县| 龙南县| 井陉县| 道孚县| 如东县| 台中县| 高要市| 杭锦后旗| 岚皋县| 红安县| 凌源市|