我想知道如何将程序的输出保存在文件中。
特别是,我试图将vowpal_wabbit应用程序的所有输出保存到文件中,当从Python运行它时:
rez1 = subprocess.check_output([parameters], shell=True, universal_newlines=True)
print(rez1)
然而它没有打印出来,而程序本身执行得很好。这很奇怪,因为当从终端使用相同的参数运行时,它为我提供了一些有用的信息。
有人可以建议解决方案吗?
P.S。 Python 3.4.1(通过Anaconda的IPython),Mac OS X
答案 0 :(得分:2)
有些程序写入stdout和stderr。为了构建@Tichodroma的代码,以下打印' stdout' stdout,' stderr'到stderr,合并两个流,并正确捕获两个输出:
import subprocess
res = subprocess.check_output(
"echo stdout; /bin/echo stderr 1>&2",
shell=True,
stderr=subprocess.STDOUT,
)
print 'DATA:', res.replace('\n', '.')
print 'END'
DATA: stdout.stderr.
END
答案 1 :(得分:1)
如果您的程序打印到STDOUT
,则表示您正在使用subprocess.check_output
。一个工作的例子:
res = subprocess.check_output("date", shell=True, universal_newlines=True)
print(res)
输出:
Thu Jul 10 09:49:31 CEST 2014\n