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

一文詳解如何使用Python實現(xiàn)文件監(jiān)控自動化系統(tǒng)

 更新時間:2026年01月29日 08:58:04   作者:張大貍  
這篇文章主要介紹了如何使用Python實現(xiàn)文件監(jiān)控自動化系統(tǒng),解決日常工作中的文件管理痛點,系統(tǒng)基于Watchdog庫實時監(jiān)控文件夾,支持文件自動分類(按類型/大小/日期)和微信通知提醒,文章詳細講解了核心代碼實現(xiàn),需要的朋友可以參考下

一、為什么需要文件監(jiān)控自動化?

在日常工作中,你是否經(jīng)常遇到這樣的困擾:

  • 同事發(fā)來的文件混雜在下載文件夾里,需要手動整理
  • 重要文件被修改卻沒能及時察覺
  • 緊急合同上傳后,需要反復刷新查看是否到位

?傳統(tǒng)方式 vs 自動化方案對比?:

方式響應速度準確性持續(xù)工作能力
人工檢查分鐘級依賴注意力8小時/天
Python監(jiān)控?秒級??100%??24小時/天

二、核心技術:Watchdog庫詳解

1. 基礎監(jiān)控實現(xiàn)

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

class MyHandler(FileSystemEventHandler):
    def on_created(self, event):
        print(f'新文件出現(xiàn): {event.src_path}')
        # 這里添加文件處理邏輯

if __name__ == "__main__":
    path = "C:/監(jiān)控文件夾"  # 替換為你的監(jiān)控路徑,比如微信文件存儲路徑,各類下載文件夾等
    event_handler = MyHandler()
    observer = Observer()
    observer.schedule(event_handler, path, recursive=True)
    observer.start()
    
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()

?關鍵參數(shù)說明?:

  • recursive=True:監(jiān)控子文件夾
  • event.src_path:獲取文件完整路徑
  • on_created:響應文件創(chuàng)建事件(還有on_modified, on_deleted等)

2. 增強功能:文件智能分類

def auto_classify(file_path):
    """根據(jù)擴展名自動分類文件"""
    from pathlib import Path
    import shutil
    
    ext_map = {
        '.pdf': '文檔',
        '.jpg': '圖片',
        '.xlsx': '表格'
    }
    
    file = Path(file_path)
    if file.is_file():
        ext = file.suffix.lower()
        target_dir = Path(file.parent) / ext_map.get(ext, '其他')
        target_dir.mkdir(exist_ok=True)
        shutil.move(str(file), target_dir)
        return target_dir / file.name

?分類規(guī)則擴展建議?:

  • 按項目名稱分類(從文件名提取關鍵詞)
  • 按文件大小分類(大文件單獨存放)
  • 按修改日期分類(自動歸檔舊文件)

三、微信實時通知實現(xiàn)

1. 通過Server醬推送

import requests

def wechat_notify(title, content):
    """發(fā)送微信通知"""
    SCKEY = "你的Server醬SCKEY"  # 在https://sct.ftqq.com申請
    url = f"https://sc.ftqq.com/{SCKEY}.send"
    data = {
        "text": title,
        "desp": content
    }
    requests.post(url, data=data)

2. 企業(yè)微信機器人通知

def qywx_notify(content):
    """企業(yè)微信機器人通知"""
    webhook = "你的企業(yè)微信群機器人Webhook地址"
    headers = {'Content-Type': 'application/json'}
    data = {
        "msgtype": "text",
        "text": {
            "content": content,
            "mentioned_mobile_list": ["13800138000"]  # 需要@的人
        }
    }
    requests.post(webhook, headers=headers, json=data)

?通知內容優(yōu)化建議?:

  • 包含文件類型、大小、修改時間
  • 添加快速訪問鏈接(局域網(wǎng)路徑)
  • 重要文件變更@特定人員

四、完整實戰(zhàn)案例

1. 監(jiān)控+分類+通知完整代碼

import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
from pathlib import Path
import shutil
import requests

class SmartFileHandler(FileSystemEventHandler):
    def __init__(self):
        self.ext_map = {
            '.pdf': '文檔',
            '.docx': '文檔',
            '.xlsx': '表格',
            '.jpg': '圖片'
        }
    
    def on_created(self, event):
        file_path = event.src_path
        if Path(file_path).is_file():
            target_path = self.classify_file(file_path)
            self.send_notification(file_path, target_path)
    
    def classify_file(self, file_path):
        """文件自動分類"""
        file = Path(file_path)
        ext = file.suffix.lower()
        target_dir = Path(file.parent) / self.ext_map.get(ext, '其他')
        target_dir.mkdir(exist_ok=True)
        shutil.move(str(file), target_dir)
        return target_dir / file.name
    
    def send_notification(self, origin_path, target_path):
        """發(fā)送微信通知"""
        file = Path(origin_path)
        msg = f"?? 新文件提醒\n\n" \
              f"文件名:{file.name}\n" \
              f"類型:{file.suffix}\n" \
              f"大小:{file.stat().st_size/1024:.2f}KB\n" \
              f"存放位置:{target_path}"
        wechat_notify("文件監(jiān)控提醒", msg)

def main():
    path = "C:/監(jiān)控文件夾"  # 設置監(jiān)控路徑
    event_handler = SmartFileHandler()
    observer = Observer()
    observer.schedule(event_handler, path, recursive=True)
    observer.start()
    
    print(f"開始監(jiān)控文件夾: {path}")
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()

if __name__ == "__main__":
    main()

2. 部署與優(yōu)化建議

?部署方式?:

Windows系統(tǒng):打包為exe后臺運行

pyinstaller --onefile --windowed file_monitor.py

Linux系統(tǒng):配置為systemd服務

sudo nano /etc/systemd/system/filemon.service

?性能優(yōu)化?:

添加文件過濾:只監(jiān)控特定類型文件

if not file_path.endswith(('.pdf', '.docx')):
    return

設置延遲處理:避免短時間重復觸發(fā)

last_trigger = 0
def on_created(self, event):
    if time.time() - last_trigger < 5:  # 5秒內不重復處理
        return
    last_trigger = time.time()

五、企業(yè)級增強方案

安全增強實現(xiàn)部分源碼

def check_virus(file_path):
    """簡單的文件安全檢查"""
    blacklist = ['.exe', '.bat', '.vbs']
    if Path(file_path).suffix.lower() in blacklist:
        wechat_notify("安全警報", f"發(fā)現(xiàn)可疑文件: {file_path}")
        quarantine_file(file_path)  # 隔離可疑文件

以上就是一文詳解如何使用Python實現(xiàn)文件監(jiān)控自動化系統(tǒng)的詳細內容,更多關于Python自動監(jiān)控文件夾的資料請關注腳本之家其它相關文章!

相關文章

  • Python中functools模塊函數(shù)解析

    Python中functools模塊函數(shù)解析

    這篇文章主要介紹了Python中functools模塊的常用函數(shù)解析,分別講解了functools.cmp_to_key,functools.total_ordering,functools.reduce,functools.partial,functools.update_wrapper和functools.wraps的用法,需要的朋友可以參考下
    2017-03-03
  • pytorch:torch.mm()和torch.matmul()的使用

    pytorch:torch.mm()和torch.matmul()的使用

    今天小編就為大家分享一篇pytorch:torch.mm()和torch.matmul()的使用,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python常見字符串操作函數(shù)小結【split()、join()、strip()】

    Python常見字符串操作函數(shù)小結【split()、join()、strip()】

    這篇文章主要介紹了Python常見字符串操作函數(shù),結合實例形式總結分析了split()、join()及strip()的常見使用技巧與注意事項,需要的朋友可以參考下
    2018-02-02
  • python flask安裝和命令詳解

    python flask安裝和命令詳解

    Flask是使用Python編寫的Web微框架,這篇文章主要介紹了python flask安裝和命令,需要的朋友可以參考下
    2019-04-04
  • MySQL Prepared語句的具體使用

    MySQL Prepared語句的具體使用

    本文主要介紹了MySQL Prepared語句的具體使用,可以利用prepared語句來避免重復解析SQL的開銷,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-09-09
  • 一文搞懂霍夫曼樹原理及C++/Python/Java實戰(zhàn)實現(xiàn)

    一文搞懂霍夫曼樹原理及C++/Python/Java實戰(zhàn)實現(xiàn)

    霍夫曼樹是一種用于數(shù)據(jù)壓縮的樹形結構,通過構建具有最小帶權路徑長度的二叉樹,實現(xiàn)高效的數(shù)據(jù)編碼,這篇文章主要介紹了霍夫曼樹原理及C++/Python/Java實戰(zhàn)實現(xiàn)的相關資料,需要的朋友可以參考下
    2025-11-11
  • 使用python制作一款文件粉碎工具

    使用python制作一款文件粉碎工具

    這篇文章主要為大家詳細介紹了如何使用python制作一款文件粉碎工具,能夠有效粉碎密碼文件和機密Excel表格等,感興趣的小伙伴可以了解一下
    2025-08-08
  • Python使用ctypes調用Windows API清空回收站

    Python使用ctypes調用Windows API清空回收站

    很多朋友剛接觸 Windows 編程時,總覺得調用系統(tǒng)底層 API 是一件很高深、非常復雜的事情,感到很害怕,本文就以實現(xiàn) Windows 上的 清空回收站功能為例,從零開始詳解 Python 如何通過 ctypes 庫跟 Windows API 進行交互調用,需要的朋友可以參考下
    2026-04-04
  • Python 復平面繪圖實例

    Python 復平面繪圖實例

    今天小編就為大家分享一篇Python 復平面繪圖實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python實現(xiàn)打印九九乘法表的不同方法總結

    Python實現(xiàn)打印九九乘法表的不同方法總結

    這篇文章主要為大家介紹了Python實現(xiàn)打印九九乘法表的幾種不同方法,文中的示例代碼講解詳細,簡潔易懂,感興趣的小伙伴可以跟隨小編一起學習一下
    2022-11-11

最新評論

德钦县| 淳安县| 皋兰县| 黑水县| 台州市| 乳源| 房产| 保定市| 日喀则市| 阆中市| 麻城市| 紫金县| 铁岭县| 正安县| 伊吾县| 偃师市| 天镇县| 霍林郭勒市| 丰都县| 龙山县| 玛多县| 西盟| 广丰县| 双牌县| 墨竹工卡县| 晋江市| 黄骅市| 明水县| 金山区| 隆子县| 桃江县| 闽清县| 北川| 洛阳市| 徐汇区| 邯郸县| 子洲县| 阆中市| 昌黎县| 龙口市| 南丹县|