Введение
JSON (JavaScript Object Notation) — это лёгкий формат обмена данными, который широко используется в файлах конфигурации и при взаимодействии с API.
Инструменты оболочки хорошо работают с обычным текстом, но структурированные форматы, такие как JSON, обычно проще и безопаснее обрабатывать в Python с помощью встроенных библиотек.
В этой лабораторной работе вы выступите в роли разработчика, которому нужно обновить конфигурацию приложения. Вы создадите файл конфигурации JSON, напишете скрипт Python для его загрузки, измените один параметр и сохраните изменения в новый файл.
Создание тестовых данных
На этом шаге вы создадите тестовый файл конфигурации JSON. Он имитирует обычный файл настроек программного приложения и содержит ключи с именем приложения, версией, режимом отладки и ограничением количества подключений.
Сначала убедитесь, что вы находитесь в правильном рабочем каталоге:
JSON — один из самых распространённых форматов структурированных данных в современной эксплуатации систем, поскольку его используют API, облачные инструменты и многие системы конфигурации. Умение безопасно читать и изменять JSON гораздо полезнее, чем работа с ним как с обычным текстом.
cd ~/project
Теперь создайте файл config.json с помощью текстового редактора, например nano.
nano config.json
Вставьте в файл следующее содержимое. Этот объект JSON содержит логическое значение (false), целое число (100) и строки.
{
"appName": "SuperApp",
"version": "1.0.0",
"debug": false,
"maxConnections": 100
}
Чтобы сохранить файл и выйти из nano:
Нажмите Ctrl + O, чтобы записать изменения, затем нажмите Enter для подтверждения имени файла. После этого нажмите Ctrl + X, чтобы выйти из редактора.
Проверить содержимое файла можно с помощью команды cat:
cat config.json
В терминале должно отобразиться содержимое JSON.
Чтение JSON
На этом шаге вы напишете скрипт Python, который прочитает файл config.json. Модуль json в Python преобразует данные JSON в словарь Python.
Здесь Python имеет явное преимущество перед простым написанием скриптов оболочки. Вместо поиска текста с помощью регулярных выражений и надежды на простую структуру Python разбирает файл по правилам JSON и предоставляет настоящие типы данных для работы в коде.
Представьте json.load() как «распаковку» посылки. Функция берёт текст из файла — «коробку» — и преобразует его в словарь Python — «содержимое», с которым можно легко работать и которое можно изменять в коде.
Создайте новый скрипт Python с именем parse_json.py:
nano parse_json.py
Добавьте в файл следующий код. Скрипт импортирует модуль json, открывает файл конфигурации и загружает данные.
import json
## Open the JSON file
with open('config.json', 'r') as file:
## Load the data into a Python dictionary
data = json.load(file)
## Print the data to verify it was loaded correctly
print("Current Configuration:")
print(data)
print(f"Type of data: {type(data)}")
Сохраните файл и выйдите из nano (Ctrl+O, Enter, Ctrl+X).
Теперь запустите скрипт, чтобы увидеть результат:
python3 parse_json.py
В консоли должен появиться словарь. Это подтверждает, что Python успешно разобрал файл JSON.
Изменение данных
На этом шаге вы измените загруженные данные в скрипте Python. Поскольку json.load() преобразует данные в обычный словарь Python, значения можно изменять так же, как в любом другом словаре.
Обратите внимание на преобразование типов. Значения JSON true и false становятся в Python значениями True и False. Числа остаются числами, а не превращаются в обычные строки. Благодаря этому последующие сравнения и вычисления становятся намного безопаснее.
Снова откройте parse_json.py для редактирования:
nano parse_json.py
Измените значение ключа debug с False — этому значению соответствует false в JSON — на True. Добавьте логику изменения после загрузки данных, но до их вывода.
Измените код так, чтобы он выглядел следующим образом:
import json
with open('config.json', 'r') as file:
data = json.load(file)
print("Original Debug Status:", data['debug'])
## Modify the value
data['debug'] = True
print("Updated Debug Status:", data['debug'])
Сохраните файл и выйдите из nano.
Снова запустите скрипт, чтобы проверить изменение в памяти:
python3 parse_json.py
В выводе должно быть показано исходное состояние False и обновлённое состояние True. Обратите внимание: пока это изменение существует только в памяти программы Python и ещё не сохранено в файл.
Сохранение изменений
На этом шаге вы сохраните изменённый словарь в новый файл JSON. Для этого используется функция json.dump().
Цикл «прочитать — изменить — записать» — распространённый шаблон автоматизации. Скрипт загружает структурированные данные, изменяет только нужные поля и записывает корректный JSON. Это гораздо надёжнее построчного редактирования, когда структура файла становится сложнее.
Представьте json.dump() как «упаковку» посылки. Функция берёт словарь Python — «предметы» — и снова преобразует его в текстовый формат — «запечатанную коробку», чтобы сохранить в файле. При тестировании рекомендуется записывать данные в новый файл, например new_config.json, чтобы не перезаписать исходную конфигурацию.
В последний раз откройте parse_json.py:
nano parse_json.py
Добавьте код, который записывает словарь data в файл new_config.json. Параметр indent=4 сделает содержимое файла удобным для чтения — JSON будет отформатирован с отступами.
Итоговый скрипт должен выглядеть следующим образом:
import json
## 1. Read the original file
with open('config.json', 'r') as file:
data = json.load(file)
## 2. Modify the data
data['debug'] = True
## 3. Write to a new file
with open('new_config.json', 'w') as file:
json.dump(data, file, indent=4)
print("Configuration updated and saved to new_config.json")
Сохраните файл и выйдите из nano.
Запустите скрипт, чтобы выполнить операцию чтения, изменения и записи:
python3 parse_json.py
При успешном выполнении скрипт выведет сообщение с подтверждением.
Проверка результата
На этом шаге вы убедитесь, что новый файл конфигурации создан и содержит обновлённое значение.
Проверка особенно важна для структурированных файлов: скрипт может завершиться без синтаксических ошибок, но при этом записать логически неверные данные. Повторное чтение результата позволяет подтвердить и создание файла, и корректность изменения данных.
Выведите список файлов в текущем каталоге, чтобы убедиться, что new_config.json существует:
ls -l
Теперь выведите содержимое нового файла:
cat new_config.json
Вы должны увидеть результат, похожий на этот:
{
"appName": "SuperApp",
"version": "1.0.0",
"debug": true,
"maxConnections": 100
}
Обратите внимание: теперь значение "debug" равно true.
Также можно сравнить исходный и новый файлы с помощью команды diff, чтобы точно увидеть изменения:
diff config.json new_config.json
В выводе будет показано различие между строками с параметром debug.
Итоги
В этой лабораторной работе вы научились работать с данными JSON с помощью Python. Сначала вы создали файл конфигурации в формате JSON, затем написали скрипт Python, который разобрал этот файл и преобразовал его в словарь. После этого вы программно изменили данные и сохранили обновлённую структуру в новый файл JSON.
Рабочий процесс «прочитать, изменить, записать» — фундаментальный шаблон автоматизации и написания скриптов для DevOps. Bash отлично подходит для выполнения команд, а способность Python работать со структурированными данными, такими как JSON, делает его мощным инструментом для управления сложными конфигурациями и данными API.



