Я хотел бы иметь файл конфигурации YAML для определенных параметров анализа для моего скрипта Python. Файл YAML выглядит примерно так:
settings:
 param1: 1
 param2: two
...
В моем скрипте Python я хочу передать эти значения в качестве аргументов ключевого слова функции. Загрузка файла YAML дает мне словарь. Функция имеет только аргументы ключевого слова, и я заранее не знаю, какие аргументы ключевого слова будут иметь файл конфигурации. Функция выглядит примерно так:
def process(param1=None, param2=None, param3=None):
...
Обратите внимание, что имя настроек YAML совпадает с именами аргументов ключевого слова. Функция имеет несколько возможных аргументов ключевого слова, а файл конфигурации может иметь только один или два. Очевидно, я хочу присвоить значения правильным ключевым словам.
Как я могу назначить значения YAML (и/или dict) для их назначений аргументов ключевого слова?
Решение проблемы
Вы можете получить словарь yaml.load()и использовать **синтаксис для передачи ключа/значения в функцию. Таким образом, вам не нужно заранее знать ключи. Например:
import yaml
with open('path/to/config.yml', 'rb') as f:
 conf = yaml.safe_load(f.read()) # load the config file
def process(**params): # pass in variable numbers of args
 for key, value in params.items():
 print('%s: %s' % (key, value))
process(**conf) # pass in your keyword args
Попробуйте это со своим кодом, и это должно дать вам достаточно понимания того, как реализовать свой собственный.
 
 
Комментариев нет:
Отправить комментарий