#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
это в значительной степени небезопасно с точки зрения безопасности.