最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python使用watchdog實(shí)現(xiàn)文件資源監(jiān)控

 更新時(shí)間:2025年01月10日 09:13:16   作者:覓遠(yuǎn)  
watchdog 支持跨平臺(tái)文件資源監(jiān)控,可以檢測(cè)指定文件夾下文件及文件夾變動(dòng),下面我們來(lái)看看Python如何使用watchdog實(shí)現(xiàn)文件資源監(jiān)控吧

Python文件監(jiān)控庫(kù)watchdogs簡(jiǎn)介

隨著Python在各種應(yīng)用領(lǐng)域中的廣泛使用,其生態(tài)環(huán)境也在持續(xù)繁榮,特別是各種第三方庫(kù)的誕生,極大地豐富了開(kāi)發(fā)者的工具箱。在眾多庫(kù)中, watchdog 作為一個(gè)高效的文件系統(tǒng)監(jiān)控庫(kù),對(duì)于實(shí)時(shí)響應(yīng)文件系統(tǒng)的各種事件(如文件創(chuàng)建、修改、刪除等)提供了極大便利。無(wú)論是在需要監(jiān)控項(xiàng)目文件變化以觸發(fā)自動(dòng)化構(gòu)建的開(kāi)發(fā)場(chǎng)景,還是在需要日志記錄、文件備份等運(yùn)維任務(wù)中, watchdog 都能發(fā)揮重要的作用。

文件資源監(jiān)控

安裝:pip install watchdog

watchdog 支持跨平臺(tái)文件資源監(jiān)控,可以檢測(cè)指定文件夾下文件及文件夾變動(dòng),當(dāng)出現(xiàn)不同變動(dòng)(新增、刪除、修改)后,可進(jìn)行相應(yīng)處理。

from time import sleep, strftime
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
 
 
class FileMonitoring(FileSystemEventHandler):
    # event.is_directory 判斷是否是目錄操作
    def on_modified(self, event):  # 文件或文件夾被修改時(shí)觸發(fā)(新增、刪除及修改文件或文件夾都會(huì)被監(jiān)測(cè)為文件夾的修改)
        tm = strftime("%Y-%m-%d %H:%M:%S")
        print(f'{tm} 修改文件夾{event.src_path}')
 
    def on_created(self, event):  # 文件或目錄被創(chuàng)建時(shí)觸發(fā)
        tm = strftime("%Y-%m-%d %H:%M:%S")
        if event.is_directory:
            print(f'{tm} 創(chuàng)建文件夾{event.src_path}')
        else:
            print(f'{tm} 創(chuàng)建文件{event.src_path}')
 
    def on_deleted(self, event):  # 文件或目錄被刪除時(shí)觸發(fā)
        tm = strftime("%Y-%m-%d %H:%M:%S")
        if event.is_directory:
            print(f'{tm} 刪除文件夾{event.src_path}')
        else:
            print(f'{tm} 刪除文件{event.src_path}')
 
    def on_moved(self, event):  # 目錄的創(chuàng)建和刪除操作,被Watchdog視為移動(dòng)操作,因此通過(guò)on_moved方法進(jìn)行捕捉,重命名也可用此捕獲。
        tm = strftime("%Y-%m-%d %H:%M:%S")
        if event.is_directory:
            print(f'{tm} 重命名文件夾:文件夾{event.src_path} 重命名為 {event.dest_path}')
        else:
            print(f'{tm} 重命名文件:文件{event.src_path} 重命名為  {event.dest_path}')
 
 
class MyFileMonitor():
    def __init__(self):
        self.event_handler = FileMonitoring()  # 初始化事件處理器實(shí)例
 
    def sever(self, watched_dir, recursive: bool = True):
        '''
        :param watched_dir: .schedule 方法設(shè)置要監(jiān)控的目錄路徑和事件處理器
        :param recursive: recursive=True 參數(shù)以遞歸地監(jiān)控目錄內(nèi)的所有子目錄
        :return:
        '''
        self.observer = Observer()  # 初始化觀察器
        self.observer.schedule(self.event_handler, watched_dir, recursive=recursive)  # 將事件處理器關(guān)聯(lián)到觀察器
        return self.observer
 
    def run(self, watched_dir, recursive: bool = True):
        '''
        啟動(dòng)觀察器并進(jìn)入無(wú)限循環(huán),直到用戶(hù)按下 Ctrl+C 中斷程序,
        observer.stop() 和 observer.join() 來(lái)正確停止和清理觀察器資源。
        '''
 
        observer = self.sever(watched_dir, recursive)
        observer.start()
        try:
            while True:
                sleep(.1)
        except KeyboardInterrupt:
            observer.stop()
 
        observer.join()

監(jiān)測(cè)文件夾新增、刪除、修改文件夾

在Python中,watchdog 庫(kù)確實(shí)提供了方便的方式來(lái)監(jiān)控文件夾及其內(nèi)部文件的新增、刪除、修改以及重命名等事件。下面是一個(gè)簡(jiǎn)單的示例,展示如何使用 watchdog 來(lái)監(jiān)聽(tīng)一個(gè)文件夾中的這些事件

import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
 
# 定義事件處理器類(lèi)
class MyHandler(FileSystemEventHandler):
    def on_modified(self, event):
        print(f'File modified: {event.src_path}')
 
    def on_created(self, event):
        print(f'File created: {event.src_path}')
 
    def on_deleted(self, event):
        print(f'File deleted: {event.src_path}')
 
    # 對(duì)于文件夾的創(chuàng)建、刪除操作,請(qǐng)注意:
    # 目錄級(jí)別的事件可通過(guò)on_moved方法捕獲,因?yàn)閯?chuàng)建和刪除目錄也表現(xiàn)為移動(dòng)事件
    def on_moved(self, event):
        if event.is_directory:
            what = "Directory"
        else:
            what = "File"
        print(f'{what} moved: {event.src_path} to {event.dest_path}')
 
# 初始化事件處理器實(shí)例
event_handler = MyHandler()
 
# 指定要監(jiān)控的文件夾路徑
watched_dir = '/path/to/watch'
 
# 初始化觀察器
observer = Observer()
 
# 將事件處理器關(guān)聯(lián)到觀察器
observer.schedule(event_handler, watched_dir, recursive=True)
 
# 啟動(dòng)觀察器
observer.start()
 
print(f'Starting to watch {watched_dir} for file system events...')
try:
    while True:
        time.sleep(1)
except KeyboardInterrupt:
    observer.stop()
 
observer.join()

在這個(gè)例子中,MyHandler 類(lèi)繼承了 FileSystemEventHandler 并實(shí)現(xiàn)了幾個(gè)方法來(lái)處理不同的文件系統(tǒng)事件。on_modified 方法會(huì)在文件被修改時(shí)觸發(fā),on_created 在文件或目錄被創(chuàng)建時(shí)觸發(fā),而 on_deleted 在文件或目錄被刪除時(shí)觸發(fā)。對(duì)于目錄的創(chuàng)建和刪除操作,由于Watchdog將它們視為移動(dòng)操作,因此通過(guò) on_moved 方法進(jìn)行捕捉,并檢查 event.is_directory 屬性以區(qū)分是文件還是目錄。

通過(guò) observer.schedule 方法設(shè)置要監(jiān)控的目錄路徑和事件處理器,并設(shè)置 recursive=True 參數(shù)以遞歸地監(jiān)控目錄內(nèi)的所有子目錄。

最后啟動(dòng)觀察器并進(jìn)入無(wú)限循環(huán),直到用戶(hù)按下 Ctrl+C 中斷程序,此時(shí)會(huì)調(diào)用 observer.stop() 和 observer.join() 來(lái)正確停止和清理觀察器資源。

到此這篇關(guān)于python使用watchdog實(shí)現(xiàn)文件資源監(jiān)控的文章就介紹到這了,更多相關(guān)python watchdog文件資源監(jiān)控內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中的FTP通信模塊ftplib的用法整理

    Python中的FTP通信模塊ftplib的用法整理

    ftplib模塊中擁有FTP類(lèi),可以做到FTP協(xié)議下的各種上傳下載操作,以下就來(lái)看一下Python中的FTP通信模塊ftplib的用法整理:
    2016-07-07
  • python針對(duì)Oracle常見(jiàn)查詢(xún)操作實(shí)例分析

    python針對(duì)Oracle常見(jiàn)查詢(xún)操作實(shí)例分析

    這篇文章主要介紹了python針對(duì)Oracle常見(jiàn)查詢(xún)操作,結(jié)合實(shí)例形式分析了python針對(duì)Oracle常見(jiàn)的子查詢(xún)、多表查詢(xún)等相關(guān)原理、操作技巧與使用注意事項(xiàng),需要的朋友可以參考下
    2020-04-04
  • scipy稀疏數(shù)組dok_array的具體使用

    scipy稀疏數(shù)組dok_array的具體使用

    本文主要介紹了scipy稀疏數(shù)組dok_array的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • python實(shí)現(xiàn)會(huì)員信息管理系統(tǒng)(List)

    python實(shí)現(xiàn)會(huì)員信息管理系統(tǒng)(List)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)會(huì)員信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Python中的Unittest基本使用

    Python中的Unittest基本使用

    這篇文章主要介紹了Python中的Unittest基本使用,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • selenium+python實(shí)現(xiàn)基本自動(dòng)化測(cè)試的示例代碼

    selenium+python實(shí)現(xiàn)基本自動(dòng)化測(cè)試的示例代碼

    這篇文章主要介紹了selenium+python實(shí)現(xiàn)基本自動(dòng)化測(cè)試的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Django中間件基礎(chǔ)用法詳解

    Django中間件基礎(chǔ)用法詳解

    這篇文章主要介紹了Django中間件基礎(chǔ)用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python實(shí)現(xiàn)獲取視頻時(shí)長(zhǎng)功能

    Python實(shí)現(xiàn)獲取視頻時(shí)長(zhǎng)功能

    這篇文章主要介紹了Python如何實(shí)現(xiàn)獲取視頻時(shí)長(zhǎng)功能,可以精確到毫秒。文中的示例代碼簡(jiǎn)潔易懂,對(duì)我們的學(xué)習(xí)有一定的幫助,感興趣的可以了解一下
    2021-12-12
  • 在pyCharm中下載第三方庫(kù)的方法

    在pyCharm中下載第三方庫(kù)的方法

    這篇文章主要介紹了在pyCharm中下載第三方庫(kù)的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Python的Bottle框架的一些使用技巧介紹

    Python的Bottle框架的一些使用技巧介紹

    這篇文章主要介紹了Python的Bottle框架的一些使用技巧,文中用代碼舉例介紹了這些技巧用到的特性,需要的朋友可以參考下
    2015-04-04

最新評(píng)論

肇庆市| 理塘县| 尖扎县| 永登县| 湖口县| 永顺县| 吉首市| 泗阳县| 二连浩特市| 寿阳县| 娄烦县| 改则县| 南川市| 青海省| 邯郸市| 祁阳县| 闵行区| 元江| 蓬溪县| 二连浩特市| 海城市| 滦南县| 林甸县| 城固县| 鄢陵县| 定结县| 分宜县| 克东县| 万宁市| 卓尼县| 襄汾县| 通城县| 贺州市| 泉州市| 文登市| 庆云县| 岱山县| 芦山县| 汪清县| 库尔勒市| 盐山县|