Python 从YAML文件分配类方法

Python 从YAML文件分配类方法,python,class-design,yaml,Python,Class Design,Yaml,简而言之,我已经编写了一个应用程序,可以从不同的电子邮件源中解析指定格式的文本文件。目前,为了正确上传信息,用户允许使用两种格式。我还包括了一个简单的YAML文件,它允许具有非编程背景的人(即系统管理员)定义基本的解析参数,例如每个不同电子邮件提要的分隔符 事实证明,用户将需要比我定义的格式多得多的格式。就像在完全不同的解析算法格式中一样 由于不熟悉源代码的人很难不断添加/更新解析方法,因此我的想法是允许管理员在YAML文件中定义自定义方法,如下所示: parser: !!python/name

简而言之,我已经编写了一个应用程序,可以从不同的电子邮件源中解析指定格式的文本文件。目前,为了正确上传信息,用户允许使用两种格式。我还包括了一个简单的YAML文件,它允许具有非编程背景的人(即系统管理员)定义基本的解析参数,例如每个不同电子邮件提要的分隔符

事实证明,用户将需要比我定义的格式多得多的格式。就像在完全不同的解析算法格式中一样

由于不熟悉源代码的人很难不断添加/更新解析方法,因此我的想法是允许管理员在YAML文件中定义自定义方法,如下所示:

parser: !!python/name:modules.custom.parser
这样管理员就可以定义自己的解析方法,例如modules.custom.parser,而无需深入研究源代码


我是在玩火,允许管理员动态上传他们自己的自定义方法吗?

我不认为拥有“可执行配置文件”是个坏主意,但我认为混合使用YAML和Python代码可能会让人困惑。也许你可以选择Xen、SCons、hellanzb等,让你的“配置文件”只是一个Python脚本?

在我看来,这可能不会像你想的那样工作。我猜当您解析yaml文档时,modules.custom.parser需要位于sys.path中。你也是这样看的吗?在这种情况下,实际的代码将不包含在yaml文档中,需要通过其他方式提供。我使用的是PyYAML,它导入类/函数就像普通python脚本一样。我只是将modules目录保持在与python脚本相同的目录中。