如何获取用python在shell中执行的命令和参数

如何获取用python在shell中执行的命令和参数,python,bash,argv,sys,Python,Bash,Argv,Sys,我正在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.l

我正在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代码片段中的某物&我的日志流。我不知道如何才能做到这一点


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

管道不是这样工作的。它只是将命令的输出发送到下一个命令。您可以将日志组名称和日志流名称设置为环境变量

export LGN=something
...
然后使用os.environ[LGN]在python中访问它。。。与此类似

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

这不是管道的工作原理。它只是将命令的输出发送到下一个命令。您可以将日志组名称和日志流名称设置为环境变量

export LGN=something
...
然后使用os.environ[LGN]在python中访问它。。。与此类似

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

恐怕这无法完成,因为这些是另一个命令的参数,而不是Python。您可以使用子流程模块从Python内部执行整个命令,这实际上是我想到的第二个选项,但我必须在bash脚本中做很多更改。我只是想知道这样做是否可行。@Mohan:编程的一般做法是,如果你在两个地方需要一条信息,你就把它绑定到一个变量上,然后在每个地方使用这个变量。它使维护更容易。在您的例子中,您可以使用环境变量来保存日志组和日志流,并在aws命令和Python中使用这些变量。恐怕这无法做到,因为这些是另一个命令的参数,而不是Python的参数。您可以使用子流程模块从Python内部执行整个命令,这实际上是我想到的第二个选项,但我必须在bash脚本中做很多更改。我只是想知道这样做是否可行。@Mohan:编程的一般做法是,如果你在两个地方需要一条信息,你就把它绑定到一个变量上,然后在每个地方使用这个变量。它使维护更容易。在您的例子中,可以使用环境变量保存日志组和日志流,并在aws命令和Python中使用这些变量。