Поиск по сайту:

Заговори, чтоб я тебя увидел (Сократ).

Как я могу увидеть изменения каталога в Python?

2 мин для чтения
FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
6 июня 2021
Как установить Python 3 на Ubuntu 16.04 LTS
В некоторых случаях, особенно в критических и ограниченных местах файловой системы, может быть полезно знать, когда что-то изменилось и что изменилось. Используя инструменты Linux Inotify и Python, мы можем просматривать и регистрировать изменения, происходящие в системе.

В этом руководстве будет рассмотрено, как реализовать простой скрипт, который использует Python и Linux Inotify API для отслеживания изменений в определенном каталоге и регистрации изменений консоли.

Прежде чем мы перейдем к сценарию, давайте кратко обсудим, как работает Inotify.

 

Что такое Inotify? Как это работает?

Inotify – это подсистема ядра, которая предоставляет механизм для отслеживания событий в файловой системе и сообщения о них различным приложениям, которым они необходимы. Inotify невероятно мощный, потому что он работает на нижних уровнях ядра и настраивается для расширения функциональности. Inotify может отслеживать изменения в каталогах и отдельных файлах.

Хотя Inotify мощный, у него есть некоторые ограничения. Эти ограничения включают:

  • Inotify не поддерживает рекурсивный просмотр каталогов
  • Доступно только в ядре Linux.
  • Переименование событий с помощью Inotify напрямую не рассматривается.

Однако Inotify по-прежнему является гораздо лучшим выбором, чем его предшественник Dnotify. Inotify широко применяется в приложениях безопасности, таких как антивирусы.

Теперь, когда у нас есть базовая теория Inotify, давайте перейдем к созданию сценария, который поможет нам отслеживать изменения в каталогах.

 

Установка Python и Watchdog

Прежде чем погрузиться в код, давайте установим несколько требований, таких как установка Python и пакета watchdog.

Чтобы установить Python3 в Debian, используйте команду apt как:

sudo apt-get update

sudo apt-get install python3.7 python3-pip -y

Чтобы установить пакет watchdog, используйте команду pip3, как показано ниже:

https://pypi.org/project/watchdog/

sudo pip3 install watchdog

Написание сценария

Скрипт, который мы создадим в этом уроке, очень прост. Рассмотрим исходный код, показанный ниже:

import sys
import logging
import time
from watchdog.events import LoggingEventHandler
from watchdog.observers import Observer


def monitor():
# Добавить базовую конфигурацию
logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(message)s",
datefmt="%Y-%m-%d %H:%M:%S")
# Получить каталог в качестве аргумента
path = sys.argv[1] if len(sys.argv) > 1 else '.'
e_handler = LoggingEventHandler()
watch = Observer()
watch.schedule(e_handler, path, recursive=True)
watch.start()
try:
while True:
time.sleep(2)
except KeyboardInterrupt:
watch.stop()
watch.join()
monitor()

 

Читать  Как перезагрузить Linux с помощью командной строки

Начнем с импорта необходимых модулей, включая сторожевой таймер. Затем мы создаем простую функцию монитора и устанавливаем конфигурацию, такую ​​как формат вывода и дату. Затем мы устанавливаем аргументы пути к каталогу.

Затем мы переходим к созданию объекта Observer и настраиваем его для рекурсивного отслеживания изменений в указанном каталоге, если не встречается прерывание клавиатуры (CTRL + C)

Наконец, мы вызываем функцию и запускаем скрипт.

 

Заключение

Используя эту статью, мы создали простой скрипт, который отслеживает изменения в каталоге и постоянно записывает их в консоль.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Поделиться в соц. сетях:
5 1 голос
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Читайте также

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close