如何避免os.system()在python中打印出返回值

Sha*_*ang 2 python bash call

我正在使用Python调用bash来执行另一个bash脚本:

begin = int(sys.argv[1])
result = os.system("/tesladata/isetools/cdISE.bash %s" %begin)
Run Code Online (Sandbox Code Playgroud)

打印后result,它不仅给我输出,还给出了返回状态(0这里).如果我只需要输出,我该怎么办?

而且,仅仅是为了好奇,有多少方法可以在Python中调用bash?我会很高兴,如果有人可以给我如何使用它们的一些参考,我只发现os.system()os.popen()至今.

Ada*_*mKG 7

实际上,result只是返回状态为整数.你正在调用的东西写入stdout,它继承自你的程序,所以你看到它立即打印出来.它永远不适用于您的程序.

查看子流程模块文档以获取更多信息:

http://docs.python.org/library/subprocess.html

包括捕获输出,以及以不同方式调用shell.

  • 具体来说,看起来他想要[subprocess.check_output](http://docs.python.org/library/subprocess.html#subprocess.check_output) (4认同)

Mic*_*ior 6

你可以通过管道扔掉任何输出/dev/null.

begin = int(sys.argv[1])
result = os.system("/tesladata/isetools/cdISE.bash %s > /dev/null" %begin)
Run Code Online (Sandbox Code Playgroud)

如果您不想显示错误,请将>to 更改2&>为discard stderr.