Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Memantau Perubahan Fail Tertentu dengan Cekap Tanpa Undian?

Bagaimanakah Saya Boleh Memantau Perubahan Fail Tertentu dengan Cekap Tanpa Undian?

Patricia Arquette
Patricia Arquetteasal
2024-12-16 02:34:10663semak imbas

How Can I Efficiently Monitor Specific File Changes Without Polling?

Memantau Perubahan Fail Tanpa Undian

Dalam kes di mana anda perlu menjejaki perubahan pada fail log tertentu dalam masa nyata, adalah penting untuk mengelakkan menggunakan teknik pengundian. Pendekatan yang lebih cekap ialah menggunakan pemberitahuan acara sistem fail.

Menggunakan Modul win32file

Fungsi win32file.FindNextChangeNotification dalam pustaka PyWin32 membolehkan anda melihat perubahan fail . Walau bagaimanapun, ia tidak secara langsung memberikan keupayaan untuk memantau fail tertentu.

Memperkenalkan Watchdog

Penyelesaian alternatif ialah menggunakan perpustakaan Watchdog. Ia menawarkan API merentas platform untuk memantau peristiwa sistem fail, termasuk melihat perubahan pada fail atau direktori tertentu.

Begini cara anda boleh menggunakan Watchdog untuk memantau perubahan fail:

import watchdog.observers
import watchdog.events

class FileChangeHandler(watchdog.events.FileSystemEventHandler):
    def on_modified(self, path, filename):
        # Handle file changes here
        print(f"File modified: {filename}")

observer = watchdog.observers.Observer()
observer.schedule(FileChangeHandler(), path, recursive=False)
observer.start()
observer.join()

Skrip ini secara automatik akan mengesan perubahan pada fail yang ditentukan dan menggunakan kaedah on_modified dengan yang diubah suai nama fail.

Nota: Menggunakan Watchdog pada pemacu rangkaian yang dipetakan mungkin tidak berfungsi kerana pengehadan cara Windows mengendalikan pemberitahuan perubahan fail pada volum rangkaian.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memantau Perubahan Fail Tertentu dengan Cekap Tanpa Undian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn