解析多个配置文件的最佳实践

时间:2017-05-17 09:56:38

标签: pyparsing

什么是最佳实践 - 如果有的话 - 解析多个配置文件?

我想解析mysql服务器配置并再次编写配置。

配置允许发出多行,如:

!includedir /etc/mysql.d/

有趣的是,某些配置可能位于主文件中,但其他配置可能位于子文件中。

我认为pyparsing只适用于一个文件或一个内容字符串。

所以我可能首先需要阅读所有文件,并重新构建内容,例如为不同的文件添加标题......

====main file====
[mysql]
....

!includedir /etc/mysql.d/

====/etc/mysql.d/my.cnf====
[client]
.....

我只会有一个pyparsing电话。 然后我可以将所有内容解析为一个大数据对象,对文件部分进行分组并将文件名作为键。这样我也可以将数据写回磁盘......

另一种可能性是解析主文件并以编程方式解析在主文件中找到的所有其他文件。 因此,我会有几个pyparsing调用。

您怎么看?

1 个答案:

答案 0 :(得分:2)

在您的pyparsing代码中,将解析操作附加到与include语句匹配的表达式,让它解析引用文件或文件目录的内容,然后将这些结果合并到当前解析输出中。解析操作将连续调用parseString,您的代码只会进行一次调用。

请参阅这个添加到pyparsing examples目录的新示例:https://github.com/pyparsing/pyparsing/blob/master/examples/include_preprocessor.py