【发布时间】:2020-11-30 13:50:28
【问题描述】:
我有一些通过 api 运行的 cli 命令,然后像这样传递给 jq
cat json.txt | jq '.members[] | [.name]
但现在我正在尝试在 python 中执行一些逻辑,然后将其通过管道输出到 jq,但即使以与上述类似的方式,我也无法弄清楚如何做到这一点。
我阅读了 python 中 jq 模块的文档,但我无法让它工作,有人可以帮我解决这个问题吗?
【问题讨论】:
-
为什么你的 Python 脚本必须知道这一点?要么自己通过管道将输出传递给 JQ (
python3 whatever.py | jq '...'),要么只在 Python 脚本中编写使用 JQ 应用的逻辑。 -
你知道我什至没有想过这样做,好主意。但如果可能的话,我也想学习如何在 python 中做到这一点?
-
有可能,你可以使用例如
subprocess。已经有quite a few 的帖子。 -
jq 至少有两个 python 包装器。请说明您尝试过哪些以及您尝试过的内容。
-
@peak 我已经尝试了 pyjq 模块并尝试了这个,但它只是不断出错 pyjq.all('.members[] | {"name": .name}' 然后我也尝试了 jmespath并做了以下但没有返回 jmespath.search("members[*]", data)