python的hcl配置解析器
pyhcl的Python项目详细描述
pyhcl
在python中实现HCL (HashiCorp Configuration Language)的解析器。这个 实现的目标是与原始的golang版本兼容 分析器。
语法和许多测试/设备都是从 将golang解析器转换为pyhcl。所有版本都经过了多种测试 python 2.7以后的python版本。
安装
pip install pyhcl
用法
本模块的使用方法与 在python中使用json模块,实现了load/loads/dumps。
import hcl with open('file.hcl', 'r') as fp: obj = hcl.load(fp)
目前dumps函数输出的是json,而不是hcl。
将hcl转换为json
pyhcl附带了一个脚本,您可以使用它轻松地将hcl转换为json, 类似于python附带的json.tool:
hcltool INFILE [OUTFILE]
结构验证
与json类似,解析hcl的输出是一个python字典,其中 没有定义的结构。HCL的Golang库实现了对 根据定义的对象解析hcl,但是这个实现 当前不支持此类构造。
相反,我建议您使用设计用于验证json的工具,例如 作为schematics库。
语法
- 单行注释以#或// 开头
- 多行注释包装在/*和*/
- 值是用语法key = value(空白)指定的 没关系)。值可以是任何原语:字符串、数字, 布尔值、对象或列表。
- 字符串是双引号,可以包含任何utf-8字符。 示例:"Hello, World"
- 数字假定为基数10。如果你在一个数字前面加上x,它 被视为十六进制。如果前缀为0,则处理 作为八进制。数字可以用科学符号表示:“1e10”。
- 布尔值:true,false
- 数组可以用[]包装。例子: ["foo", "bar", 42]。数组可以包含原语和其他 数组,但不能包含对象。对象必须使用块语法 如下所示。
使用如下所示的结构创建对象和嵌套对象:
variable "ami" { description = "the AMI to use" }
测试
运行测试:
pip install -r testing-requirements.txt tests/run_tests.sh