我想为Ubuntu创建一个python安装脚本。我试图通过创建脚本来自动化它,而不必输入所有的下载和编译命令。我真正想要的是不打印命令的所有输出,只输出错误,并将常规输出打印到文件中。为什么subprobess.call()和subprocess.Popen打印时,他们不应该?
我看了this stackoverflow指南和this python文件,但有一些我只是无法弄清楚。每当我将调用和Popen的stdout参数设置为None时,它仍然会将输出打印到shell,根据python文档,它不应该发生。
例如,假设我们在一个包含几个文件“a”,“b”和“c”的目录中。根据python文档,以下命令应该只输出0.
>>> subprocess.call(["ls", "-a"])
0
但我没有那样做。相反,我得到的输出:
>>> subprocess.call(['ls', '-a'])
. .. a b c
0
我已经尝试设置标准输出参数设置为None,但它仍然是打印输出,这是不对的。 Subprocess.Popen具有相同的确切行为。我怎样才能让Python不打印输出?
为了记录,我使用python 3.4.0运行Ubuntu 14.04 64位。
编辑:我也尝试了以上从文件内执行该文件,但我仍然得到不正确的行为。
我的理解你的问题,你想从运行巨蟒文件中的命令? 然后将其输出到文件,如果有错误,请在命令行上显示它们? – smushi 2014-10-27 05:48:56
@smushi,是的,这是正确的。 – wheeler 2014-10-27 14:04:17