首页 > 解决方案 > 如何获取在 shell 中使用 python 执行的命令和参数

问题描述

我在 aws-cli 中运行一个命令来获取日志,我需要使用这个命令的输出在 python 中执行一些操作。

我正在做这样的事情:


aws logs filter-log-events --log-group-name "something" --log-stream-names my-log-stream --filter-pattern "status=FAIL" | python3 -c "import sys, json; print(json.load(sys.stdin))" 

上述命令获取 aws 日志并运行 python 代码片段以打印返回的 json。

我想在我的 python 代码片段中访问log-group-nameand log-stream-nameie "something" & "my-log-stream" (在这种情况下)。我不确定如何做到这一点。

我尝试过使用sys.argv,但它返回了在 python 命令中传递的参数,['-c']而不是 aws 命令。

标签: pythonbashargvsys

解决方案


管道不是这样工作的。它只是将命令的输出发送到下一个命令。您可以将log-group-nameand设置log-stream-name为环境变量

export LGN=something
...

然后在 python 中访问它os.environ["LGN"]...类似于这个

export LGN="my-log-group"; <your code here> | python3 -c "import os; print(os.environ['LGN'])"

推荐阅读