成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何掌握在Python中監控文件系統的技術

開發 后端
我們將使用一個維護良好的模塊,叫做看門狗(watchdog)。基于官方文檔,watchdog是一個用于監視文件系統事件的Python API庫和shell實用程序。

[[384020]]

本文轉載自微信公眾號「Python學會」,作者Huangwei AI。轉載本文請聯系Python學會公眾號。   

看門狗watch dog

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

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

設置

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

安裝在PyPI

在終端中運行如下命令。

  1. pip install watchdog 

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

從代碼庫安裝

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

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

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

  1. cd watchdog 

運行以下命令安裝它。

  1. pip install -e. 

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

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

  1. pip show watchdog 

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

實現

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

  • 觀察者
  • 事件處理程序

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

  1. 創建一個watchdog.observers的實例。觀察者線程類。
  2. 使用自己的實現定義事件處理程序的子類,并從中創建實例。
  3. 通過附加事件處理程序的觀察者實例調用調度函數。它接受一些其他輸入參數,比如要監視的目錄的路徑。
  4. 啟動觀察者線程并等待它生成事件,這些事件將觸發事件處理程序中的代碼。

事件處理程序

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

  1. FileSystemEventHandler—可以覆蓋其中方法的基本文件系統事件處理程序。
  2. PatternMatchingEventHandler——用與正在發生的事件相關的文件路徑匹配給定的模式。
  3. RegexMatchingEventHandler -匹配給定的正則表達式和與發生事件相關的文件路徑。
  4. LoggingEventHandler—記錄捕獲的所有事件。

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

  • on_any_event -捕獲所有事件處理程序。
  • on_created -創建文件或目錄時調用。
  • on_deleted -當文件或目錄被刪除時調用。
  • on_modified -當文件或目錄被修改時調用。
  • on_moved -當文件或目錄被移動或重命名時調用。

導入

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

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

FileSystemEventHandler的子類

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

  1. class MyHandler(FileSystemEventHandler): 
  2.     def on_any_event(self, event): 
  3.         print(event.event_type, event.src_path) 
  4.  
  5.     def on_created(self, event): 
  6.         print("on_created", event.src_path) 
  7.  
  8.     def on_deleted(self, event): 
  9.         print("on_deleted", event.src_path) 
  10.  
  11.     def on_modified(self, event): 
  12.         print("on_modified", event.src_path) 
  13.  
  14.     def on_moved(self, event): 
  15.         print("on_moved", event.src_path) 

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

  • event_type—字符串形式的事件類型。默認為沒有。
  • is_directory -如果為目錄觸發事件,則為True;否則錯誤。
  • src_path—觸發此事件的文件系統對象的源路徑。

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

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

觀察者和事件

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

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

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

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

測試

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

  1. while True
  2.     try: 
  3.         pass 
  4.     except KeyboardInterrupt: 
  5.         observer.stop() 

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

  1. python test.py 

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

 

責任編輯:武曉燕 來源: Python學會
相關推薦

2017-04-20 14:55:36

LinuxPyinotifyPython

2012-07-05 09:52:06

EFS文件加密

2009-04-22 09:46:00

無線網絡WiMAX視頻傳輸

2010-05-10 15:14:13

inotifyLinux文件系統

2010-11-04 10:16:11

inotify監控Linux文件系統

2009-12-10 09:42:07

2021-01-08 15:14:16

Python循環for循環

2017-08-17 09:49:06

云存儲技術運用

2019-03-04 14:40:46

Linux文件系統修復

2020-05-22 13:40:09

Linux文件系統

2020-05-25 09:09:01

Linux件系統導航

2020-08-28 07:49:19

Linux文件系統

2024-03-22 08:43:05

PythonWatchdog文件系統監控工具

2017-03-30 10:13:11

Linux內核文件系統

2020-09-14 10:50:24

WindowsWSL 2Linux

2010-05-07 15:40:18

ibmdwLinux

2017-10-12 13:43:27

LinuxUbuntuZFS文件系統

2023-09-17 17:35:36

LinuxVeritas文件系統

2018-11-05 09:45:01

Linux文件系統命令

2009-12-14 13:33:31

linuxramdisk文件系統
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 东京av男人的天堂 | 色综合天天天天做夜夜夜夜做 | 日韩精品一区二区三区在线观看 | 亚洲精品99 | 欧美中文字幕在线 | 久久夜夜 | 久久这里只有精品首页 | 特黄毛片 | 中文字幕一区二区三区精彩视频 | 综合久久久| 国产免费视频在线 | 国产99久久精品 | 青青草在线视频免费观看 | 黄色欧美视频 | 久久婷婷香蕉热狠狠综合 | 狠狠干美女 | 欧美综合一区 | 国产精品久久久久久吹潮日韩动画 | 国产精品免费观看 | 日本精品一区二区三区视频 | 国产一二区视频 | 亚洲人成人一区二区在线观看 | 天天插天天操 | 羞羞在线视频 | 淫片一级国产 | 91免费观看 | 99精品免费视频 | 91国在线观看 | 欧美成人一区二区三区片免费 | 九九色综合 | 国产亚洲精品美女久久久久久久久久 | 国产精品伦一区二区三级视频 | 久久最新精品 | 国产精品久久久久一区二区 | av在线免费播放 | 国产高清一区二区三区 | 欧美精品久久久久久久久久 | av黄色在线播放 | 精品伊人久久 | 欧美日韩不卡合集视频 | 亚洲网站在线观看 |