Como vejo mudanças de diretório no python?

Como vejo mudanças de diretório no python?
Em alguns casos, especialmente em locais críticos e restritos do sistema de arquivos, pode ser útil saber quando as coisas mudam e o que mudou. Usando o Linux Inotify Tools e Python, podemos visualizar e registrar as alterações que acontecem no sistema.

Este tutorial superará como implementar um script simples que usa Python e Linux Inotify API para monitorar as alterações em um diretório específico e registrar as alterações do console.

Antes de chegarmos ao script, discutimos brevemente como o Inotify funciona.

O que é inotificar? Como funciona?

O Inotify é um subsistema de kernel que fornece o mecanismo para monitorar os eventos dentro do sistema de arquivos e relatá -los a vários aplicativos que os exigem. O inotificar é incrivelmente poderoso porque funciona nos níveis mais baixos do kernel e é personalizável para expandir a funcionalidade. A inotificar pode monitorar alterações nos diretórios e arquivos individuais.

Embora o inotificar seja poderoso, ele tem algumas limitações. Essas limitações incluem:

  • O Inotify não suporta assistir diretório recursivo
  • Está disponível apenas no kernel Linux
  • A renomeação de eventos usando o Inotify não é abordada diretamente.

No entanto, o Inotify ainda é uma escolha muito melhor do que o Dnotify, seu antecessor. A inotificar é altamente aplicável em aplicativos de segurança como antivírus.

Agora que temos a teoria básica do INOTIFITY Fora do caminho, vamos mergulhar na construção do script que nos ajudará a monitorar mudanças de diretório.

Instalando Python e Watchdog

Antes de mergulhar no código, vamos configurar alguns requisitos, como a instalação do Python e o pacote de Watchdog.

Para instalar o Python3 no Debian, use o comando apt como:

Atualização de sudo apt-get
sudo apt-get install python3.7 python3 -pip -y

Para instalar o pacote Watchdog, use o comando pip3, como mostrado abaixo:

https: // pypi.org/project/watchdog/
sudo pip3 install watchdog

Escrevendo o script

O script que criaremos neste tutorial é muito simples. Considere o código -fonte mostrado abaixo:

Importar sistemas
importar log
tempo de importação
do cão de guarda.Eventos importando loggingEventHandler
do cão de guarda.Observadores importam observador
DEF Monitor ():
# Adicionar configuração básica
exploração madeireira.BasicConfig (nível = registro.Info, format = " %(asctime) s - %(mensagem) s",
datefmt = "%y-%m-%d%h:%m:%s")
# Obtenha diretório como argumento
caminho = sys.argv [1] se Len (SYS.argv)> 1 else '.'
e_handler = loggingEventHandler ()
assistir = Observer ()
assistir.cronograma (e_handler, caminho, recursivo = true)
assistir.começar()
tentar:
enquanto é verdade:
tempo.sono (2)
Exceto keyboardInterrupt:
assistir.parar()
assistir.juntar()
monitor()

Começamos importando os módulos necessários, incluindo Watchdog. Em seguida, criamos uma função de monitor simples e definimos a configuração, como o formato de saída e a data. Em seguida, definimos os argumentos do caminho do diretório.

Em seguida, nos movemos para criar um objeto observador e configurá -lo para monitorar recursivamente as alterações no diretório especificado, a menos que uma interrupção do teclado seja encontrada (Ctrl + C)

Finalmente, chamamos a função e executamos o script. Você obterá uma saída como mostrado abaixo:

Conclusão

Usando este tutorial, criamos um script simples que monitora as mudanças em um diretório e as registra constantemente no console.