Как вы запрашиваете изменения в файле JSON, используя сценарий python, который выполняется в фоновом режиме, и извлекаете изменения?

1

У меня есть файл JSON, который помещается в /etc/папку системы Linux и содержит свойства маршрутизатора. Допустим, пользователь хочет изменить конфигурацию маршрутизатора и изменить IP-адрес интерфейса. Я работаю над скриптом python, который ведет опрос файла для изменений в файле JSON и извлекает новые данные, которые были изменены для дальнейшей обработки.

"device": 
            {
                "device_image": "", 
                "password": "", 
                "interface": [
                    {
                        "interface_ip": "", 
                        "interface_type": "", 
                        "interface_name": "", 
                        "interface_uid": ""
                    }, 
                    {
                        "interface_ip": "", 
                        "interface_type": "", 
                        "interface_name": "", 
                        "interface_uid": ""
                    }, 
                    {
                        "interface_ip": "", 
                        "interface_type": "", 
                        "interface_name": "", 
                        "interface_uid": ""
                    }, 
                    {
                        "interface_ip": "", 
                        "interface_type": "", 
                        "interface_name": "", 
                        "interface_uid": ""
                    }
                ], 
                "username": "", 
                "device_id": "", 
                "ipaddress": "", 
                "gateway": "", 
                "device_name": "R1"
            }

Есть ли простой способ сделать это?

  • 0
    что ты уже испробовал?
  • 0
    Я могу определить, что файл изменился, получив свойство mtime файла stat. Но мне также нужно знать, что именно изменилось в JSON, чтобы, если конфигурация, например, IP-адрес устройства изменилась, я мог его обновить.
Показать ещё 1 комментарий
Теги:

1 ответ

0

Петля, открывающая файл, и чеканка для различий должна работать:

from time import sleep
from os import listdir

sleeptime = 5

if "old_json.json" in listdir("/path/"):
    with open("/path/old_json.json/", "r") as f: old_json = f.read()

else:
    with open("/path/json.json/", "r") as f: old_json = f.read()


while True:
    with open("/path/json.json/", "r") as f: json = f.read()
    if json != old_json:
        print "json changed!"

    old_json = json

    with open("/path/old_json.json/", "w") as f: f.write(old_json)

    sleep(sleeptime)

сдержанность в секундах

  • 0
    Это всегда будет печатать «JSON изменен» в первый раз.
  • 0
    больше не @JohnGordon
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню