我有一个YAML文件,我使用Python niet作为YAML解析器来读取文件。YAML文件看起来像这样-
configuration:
warehouse: warehouse-name
database: database-name
object_type:
schema:
schema1: /path/to/schema1.sql
schema2: /path/to/schema2.sql
view:
schema1.view1:/path/to/view1.sql
schema2.view2:/path/to/view2.sql
table:
schema1.table1:/path/to/table1.sql
schema2.table2:/path/to/table2.sql
现在我可以像这样用niet读取值-
niet ".configuration.object_type.schema.schema1" /path/to/file.yaml
上面的命令将给予输出为-
/path/to/schema1.yaml
但是如果我使用这个命令,它会打印完整的一行作为输出-
niet ".configuration.object_type.schema." /path/to/file.yaml
Output -
schema1: /path/to/schema1.sql
schema2: /path/to/schema2.sql
我需要分别使用键和值,而不仅仅是值。例如,我需要打印object_type schema,后跟schema 1和相应的路径/path/to/schema1.sql。
schema
schema1
/path/to/schema1.sql
我不介意我必须使用3个命令来完成上面的输出。
1条答案
按热度按时间3phpmpom1#
目前niet还不允许这种行为。事实上,niet的研究是基于jmespath的。Niet将其所有输入转换为python dict,并使用jmespath查询该dict,因此jmespath知道如何做niet也知道如何做,不幸的是,据我所知jmespath不允许这样做。
你可以尝试这样玩:
上一个命令输出:
也许你会找到一种方法来管道更多的子命令。
现在,基于你的问题,我正在添加
additional-objects
,以允许通过多个研究,从而允许做出更复杂的输出:https://github.com/4383/niet/commit/977a617f628de52fffed3a82fc3cd16a24927171
有了这个新功能,我们将能够运行这样的命令:
希望能帮到你。
埃尔韦