捕获shell执行输出的简单python命令?

3

当我想要捕获shell执行的输出时,我会这样做。

可能是重复问题:
从Python运行Shell命令并捕获输出

declare TAGNAME=`git describe --tags` 

简单。我在Python中寻找这个,但大多数看起来都非常复杂。最简单的方法是什么?是的,我知道我可以创建一个函数,但我想知道是否存在预定义的函数。

tagname = theFunc('git describe --tags')
2个回答

6

尝试:

>>> import subprocess
>>> tagname = subprocess.check_output('git describe --tags'.split())

需要调用.strip('\n')来处理返回的字符串。 - eonil
@Eonil 为什么要调用 .strip('\n')?有\n真的很重要吗? - quantum
@xiaomao 是的。因为我将把这个字符串传递给另一个 shell 命令。如果你能接受意外的结果,那真是太好了。 - eonil

1
你应该看一下subprocess模块。你也可以用它来捕获命令的输出。手册页面中有很多使用该模块的示例。
例如:
output=subprocess.Popen(["ps", "aux"], stdout=subprocess.PIPE,
    stderr=subprocess.PIPE).communicate()

结果是一个元组,其中包含从命令中捕获的标准输出和标准错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接