Я вижу, что Python использовал для генерации большого количества кода для заголовков C / C ++ и исходных файлов.Обычно входные файлы, в которых хранятся параметры, имеют формат JSON или YAML, хотя большинство из того, что я вижу, - это YAML.Однако почему бы просто не использовать файлы Python напрямую?Зачем вообще использовать YAML в этом случае?
Это также заставило меня задуматься: поскольку Python является языком сценариев, его файлы, содержащие только данные и структуры данных, могут буквально использоваться так же, как XML, JSON, YAML и т. Д. Люди делают это?Есть ли хороший вариант использования для этого?
Что если я хочу импортировать файл конфигурации в программу на C или C ++?А как насчет программы на Python?В случае с Python, как мне кажется, вообще не имеет смысла использовать YAML, так как вы можете просто хранить свои параметры конфигурации и переменные в чистых файлах Python.В случае C или C ++ мне кажется, что вы все еще можете хранить свои данные в файлах Python, а затем просто импортировать сценарий Python, который автоматически генерирует заголовочные и исходные файлы для вас как часть процесса сборки.Опять же, возможно, в этом случае вообще нет необходимости в YAML или JSON.
Мысли?
Вот пример хранения некоторых пар вложенных хеш-таблиц ключ / значение в файле YAML:
my_params.yml:
---
dict_key1:
dict_key2:
dict_key3a: my string message
dict_key3b: another string message
И то же самое в чистом файле Python:
my_params.py
data = {
"dict_key1": {
"dict_key2": {
"dict_key3a": "my string message",
"dict_key3b": "another string message",
}
}
}
И прочитать как данные YAML, так и данные Python и распечатать их:
import_config_file.py:
import yaml # Module for reading in YAML files
import json # Module for pretty-printing Python dictionary types; See: https://stackoverflow.com/a/34306670/4561887
# 1) import .yml file
with open("my_params.yml", "r") as f:
data_yml = yaml.load(f)
# 2) import .py file
from my_params import data as data_py
# OR: Alternative method of doing the above:
# import my_params
# data_py = my_params.data
# 3) print them out
print("data_yml = ")
print(json.dumps(data_yml, indent=4))
print("\ndata_py = ")
print(json.dumps(data_py, indent=4))
Справочник по использованию json.dumps
: https://stackoverflow.com/a/34306670/4561887
ОБРАЗЕЦ ВЫХОДА python3 import_config_file.py
:
data_yml =
{
"dict_key1": {
"dict_key2": {
"dict_key3a": "my string message",
"dict_key3b": "another string message"
}
}
}
data_py =
{
"dict_key1": {
"dict_key2": {
"dict_key3a": "my string message",
"dict_key3b": "another string message"
}
}
}