Python使用watchdog庫實現監控文件系統的更改

1. 先下載對應庫:

pip install watchdog

import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandlerclass FileChangeHandler(FileSystemEventHandler):def on_modified(self, event):# 當文件被修改時觸發此方法if not event.is_directory:print(f'文件 {event.src_path} 被修改')if __name__ == "__main__":# 要監視的目錄路徑#這里填寫具體的目錄位置信息,不是具體到某個文件夾path_to_monitor = '.'  # 這里可以將 '.' 替換為你要監控的實際目錄路徑event_handler = FileChangeHandler()observer = Observer()# 將事件處理程序與要監視的路徑關聯起來,并設置遞歸監視(包括子目錄)observer.schedule(event_handler, path_to_monitor, recursive=True) observer.start()  # 啟動觀察者try:while True:time.sleep(1)  # 保持程序運行,持續監聽except KeyboardInterrupt:observer.stop()  # 按 Ctrl+C 停止監聽observer.join()  # 等待觀察者線程結束

上述代碼具體解析:

2. 定義了一個繼承自 FileSystemEventHandler 的類 FileChangeHandler,并重寫了 on_modified 方法,用于處理文件修改事件

3. 在 main 部分,首先指定要監視的目錄路徑(path_to_monitor)。

3.1 創建 FileChangeHandler 的實例 event_handler 和 Observer 的實例 observer。
3.2 使用 observer.schedule 方法將事件處理程序與要監視的路徑關聯起來,并通過設置 recursive=True 來遞歸監視目錄及其子目錄中的文件變化。
3.3 調用 observer.start 啟動觀察者,使其開始監聽文件系統事件。
3.4 使用一個無限循環保持程序運行,以便持續監聽文件系統的變化。當按下 Ctrl+C 時,捕獲 KeyboardInterrupt 異常,調用 observer.stop 停止觀察者,并使用 observer.join 等待觀察者線程結束。

4. recursive具體說明

當 recursive=True 時(這是默認情況),如果 path
是一個目錄,那么不僅會監控該目錄本身的變化,還會遞歸地監控其所有子目錄的變化,即子目錄中的文件和子目錄的創建、修改、刪除、移動等操作都會觸發相應的事件。
而當 recursive=False 時,如果 path
是一個目錄,只會監控該目錄本身的變化,不會深入監控其子目錄中的文件和子目錄的變化。如果 path 是一個文件,則無論 recursive
的值如何,都只會監控該文件的變化。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/42377.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/42377.shtml
英文地址,請注明出處:http://en.pswp.cn/web/42377.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

淺析Nginx技術:開源高性能Web服務器與反向代理

什么是Nginx? Nginx是一款輕量級、高性能的HTTP和反向代理服務器,也可以用作郵件代理服務器。它最初由俄羅斯的程序員Igor Sysoev在2004年開發,并于2004年首次公開發布。Nginx的主要優勢在于其非阻塞的事件驅動架構,能夠處理大量并…

Vue3使用ref綁定組件獲取valueRef.value為null的解決

問題: onMounted(() > {nextTick(()>{console.log(treeselectRef, treeselectRef.value);console.log(treeselectRef.value, treeselectRef.value);}); });輸出: 查看綁定和定義都沒有問題,還是獲取不到 解決:使用getCur…

數據結構第17節 最小堆

最小堆(Min Heap)是一種特殊的完全二叉樹數據結構,在這種結構中,對于任意節點,其值都小于或等于它的子節點的值。根節點是堆中的最小元素。最小堆常用于實現優先隊列,以及堆排序算法。 在Java中&#xff0…

14-55 劍和詩人29 - RoSA:一種新的 PEFT 方法

介紹 參數高效微調 (PEFT) 方法已成為 NLP 領域研究的熱門領域。隨著語言模型不斷擴展到前所未有的規模,在下游任務中微調所有參數的成本變得非常高昂。PEFT 方法通過將微調限制在一小部分參數上來提供解決方案,從而以極低的計算成本在自然語言理解任務上…

深度學習(筆記內容)

1.國內鏡像網站 pip使用清華源鏡像源 pip install <庫> -i https://pypi.tuna.tsinghua.edu.cn/simple/ pip使用豆瓣的鏡像源 pip install <庫> -i https://pypi.douban.com/simple/ pip使用中國科技大學的鏡像源 pip install <庫> -i https://pypi.mirro…

vite工程化開發配置---持續更新

vite支持tsx開發 根據之前寫的文章vue3vitetseslintprettierstylelinthuskylint-stagedcommitlintcommitizencz-git里面tsconfig配置了jsx相關選項&#xff0c;但是想要vite能夠識別我們還需要配置一下 安裝vitejs/plugin-vue-jsx pnpm i -D vitejs/plugin-vue-jsxvite.confi…

Scapy庫實現SYN洪水攻擊的Python腳本

Scapy庫實現SYN洪水攻擊的Python腳本 代碼用于學習熟悉Scapy庫及其在網絡安全研究和測試中提供的各種選項和功能 腳本旨在執行SYN洪水攻擊,這是一種分布式拒絕服務(DDoS)攻擊的類型。未經授權參與此類攻擊通常是違法的,可能會產生嚴重后果 代碼 SynFlood.py from scapy.all…

Google 搜索引擎:便捷高效、精準查詢,帶來無與倫比的搜索體驗

Google搜索引擎不僅具備檢索功能&#xff0c;實則是引領探索萬千世界的神秘鑰匙。試想&#xff0c;無論何時何地&#xff0c;只需輕觸屏幕&#xff0c;所需信息即可唾手可得。便捷與高效&#xff0c;令人嘆為觀止。其界面設計簡約直觀&#xff0c;操控體驗猶如與未來對話&#…

如何壓縮pdf文件大小,怎么壓縮pdf文件大小

在數字化時代&#xff0c;pdf文件因其穩定的格式和跨平臺兼容性&#xff0c;成為了工作與學習中不可或缺的一部分。然而&#xff0c;隨著pdf文件內容的豐富&#xff0c;pdf文件的體積也隨之增大&#xff0c;給傳輸和存儲帶來了不少挑戰。本文將深入探討如何高效壓縮pdf文件大小…

小米手機短信怎么恢復?不用求人,3個技巧一網打盡

當你突然發現安卓手機里的重要短信不見了&#xff0c;是不是感到一陣心慌意亂&#xff1f;別急&#xff0c;不用求人&#xff0c;更不用焦慮。作為基本的社交功能&#xff0c;短信是我們與外界溝通的重要橋梁&#xff0c;當刪除后&#xff0c;短信怎么恢復呢&#xff1f;今天&a…

重生奇跡MU 有向導不迷路

歡迎來到重生奇跡MU冒險世界&#xff01;為了讓您更好地享受游戲樂趣&#xff0c;我們特別為您準備了一位貼心的導游&#xff0c;讓您在游戲中不再迷路。跟隨我們的導游&#xff0c;您將更快地了解游戲規則&#xff0c;更快地升級&#xff0c;更快地獲得勝利&#xff01;快來加…

【pytorch23】MNIST測試實戰

理解 訓練完之后也需要做測試 為什么要做test&#xff1f; 上圖藍色代表train的accuracy 下圖藍色代表train的loss 基本上符合預期&#xff0c;隨著epoch增大&#xff0c;train的accuracy也會上升&#xff0c;loss也會一直下降&#xff0c;下降到一個較小的程度 但是如果只看…

Java:使用synchronized和Redis實現并發控制的區別

在線程同步中&#xff0c;synchronized和Redis雖然都可以用來實現并發控制&#xff0c;但它們的作用范圍、機制以及性能特點存在顯著差異。 1. 作用范圍 synchronized: 是Java語言內置的關鍵字&#xff0c;用于實現線程間的同步。它作用于對象或代碼塊&#xff0c;可以確保同一…

你手上有offer嗎?

作者&#xff1a;猿java。 ?順便吆喝一聲&#xff0c;如果你計算機、軟件工程、電子等相關專業本科及以上學歷&#xff0c;歡迎來共事&#xff0c;有個offer注意查收。 前端/后端/測試等均可投→技術大廠機會。 都說面試是 7分靠技術&#xff0c;3分靠技巧&#xff0c;今天我…

9.2 柵格圖層符號化單波段灰度渲染

文章目錄 前言單波段灰度QGis設置為單波段灰度二次開發代碼實現單波段灰度 總結 前言 介紹柵格圖層數據渲染之單波段灰度顯示說明&#xff1a;文章中的示例代碼均來自開源項目qgis_cpp_api_apps 單波段灰度 以“3420C_2010_327_RGB_LATLNG.tif”數據為例&#xff0c;在QGis中…

easy-poi實現動態列(標題)、多sheet導出excel

一個sheet動態導出、偽代碼&#xff0c;創建填充后的workbook對象 List<Map<String, Object>>list new ArrayList<Map<String, Object>>(); HashMap<String, Object> map new HashMap<>(); map.put("name", "小明")…

啟動完 kubelet 日志顯示 failed to get azure cloud in GetVolumeLimits, plugin.host: 1

查看 kubelet 日志組件命令 journalctl -xefu kubelet 文字描述問題 Jul 09 07:45:17 node01 kubelet[1344]: I0709 07:45:17.410786 1344 operation_generator.go:568] MountVolume.SetUp succeeded for volume "default-token-mfzqf" (UniqueName: "ku…

全光譜燈和普通led燈的區別?忠告行業三大隱患弊端!

隨著社會的迅猛發展和生活步伐的加速&#xff0c;科技產品層出不窮&#xff0c;其中全光譜燈作為書房的新寵&#xff0c;備受矚目。它是否真如其宣傳的那樣具有多重優勢&#xff0c;尤其是對那些格外注重視力健康的人群而言&#xff0c;全光譜燈是否會帶來潛在的健康風險&#…

【北京迅為】《i.MX8MM嵌入式Linux開發指南》-第一篇 嵌入式Linux入門篇-第十二章 Linux 權限管理

i.MX8MM處理器采用了先進的14LPCFinFET工藝&#xff0c;提供更快的速度和更高的電源效率;四核Cortex-A53&#xff0c;單核Cortex-M4&#xff0c;多達五個內核 &#xff0c;主頻高達1.8GHz&#xff0c;2G DDR4內存、8G EMMC存儲。千兆工業級以太網、MIPI-DSI、USB HOST、WIFI/BT…

Java基礎(十六):String的常用API

目錄 一、構造器方法二、String與字節數組的轉換&#xff08;編碼與解碼&#xff09;1、字符串 --> 字節數組&#xff1a;&#xff08;編碼&#xff09;2、字節數組 --> 字符串&#xff1a;&#xff08;解碼&#xff09;3、iso-8859-1的特殊用法4、byte數組的數字表示 三…