У меня есть сценарий командной строки, который я запускаю с большим количеством аргументов. Теперь я подошел к тому моменту, когда у меня слишком много аргументов, и я хочу, чтобы некоторые аргументы также были в форме словаря.
Поэтому для упрощения вещей я бы хотел вместо этого запустить скрипт с файлом настроек. Я действительно не знаю, какие библиотеки использовать для разбора файла. Какова лучшая практика для этого? Я мог бы, конечно, что-то придумать, но если для этого есть какая-то библиотека, я весь в ушах.
Несколько «требований»:
- Вместо использования
pickle
я хотел бы, чтобы это был прямой текстовый файл, который можно легко читать и редактировать. - Я хочу иметь возможность добавлять в него словарные данные, то есть должна поддерживаться некоторая форма вложенности.
Упрощенный файл псевдо-примера:
truck:
color: blue
brand: ford
city: new york
cabriolet:
color: black
engine:
cylinders: 8
placement: mid
doors: 2
Ответы:
У вас может быть обычный модуль Python, скажем config.py, например:
и используйте это так:
источник
.py
файлы являются исполняемыми, поэтому любой код может быть запущен при попытке загрузить конфигурациюimport
. Это неприемлемо с точки зрения безопасности.ast.literal_eval
? docs.python.org/3/library/ast.html#ast.literal_evalПример конфигурации, который вы указали, является действительным YAML . Фактически, YAML отвечает всем вашим требованиям, реализован на большом количестве языков и чрезвычайно удобен для человека. Я очень рекомендую вам использовать его. Проект PyYAML предоставляет хороший модуль Python, который реализует YAML.
Использовать модуль yaml чрезвычайно просто:
источник
pip3 install pyyaml
это готово для импорта в скрипты Python.import yaml; from munch import munchify; f = munchify(yaml.load(…)); print(fo.d.try)
Я нашел это наиболее полезным и простым в использовании https://wiki.python.org/moin/ConfigParserExamples
Вы просто создаете "myfile.ini", например:
И получить данные как:
источник
Yaml и Json - самые простые и наиболее часто используемые форматы файлов для хранения настроек / конфигурации. PyYaml может быть использован для разбора yaml. Json уже является частью Python с 2.5. Yaml - это суперсет Json. Json решит большинство случаев использования, за исключением многострочных строк, где требуется экранирование. Yaml тоже заботится об этих случаях.
источник