Передайте функцию «лямбда` в файл». yml».

#python-3.x #yaml

Вопрос:

Мне нужно передать все мои переменные через .yml файл. Хотя нет никаких проблем с передачей str переменных, я не могу понять, как я могу передать что-то более сложное, например функцию python s’ lambda .

Следующий код демонстрирует мою проблему:

Файл .yml :

 {
    csv_2_df: {
        time_stamp_params: {
         column_name: '@timestamp',
         extraction_lambda: lambda s: s[1:11]   ' '   s[12:-2],
         format: '%Y-%m-%d %H:%M:%S.%f'
        }
    }
}
 

итак, в приведенном выше примере, если я попытаюсь проанализировать его с помощью

 with open(YAML_PATH, 'r') as f:
    configs = yaml.full_load(f)
 

это создает исключение:

 yaml.parser.ParserError: while parsing a flow mapping
  in "configs.yml", line 14, column 28
expected ',' or '}', but got ':'
  in "configs.yml", line 16, column 37

 

Итак, как я могу передать python lambda функцию s в .yml файле?

Заранее спасибо за любую помощь.

Комментарии:

1. вы можете сохранить лямбда — выражение в виде строки в yml и использовать eval для перехода от строки к функции.

2. Это сработало! Спасибо! Почему ты не отправил это в качестве ответа, чтобы я мог тебе поверить?

3. Рад, что смог помочь. Имейте в виду, что eval это в значительной степени небезопасно с точки зрения безопасности.