将命令行输出导出到Python中的文件

时间:2014-06-01 20:11:13

标签: python

这是我在Python中执行jar文件的代码:

import os
os.system("java -jar xyz.jar")

我可以在终端上看到输出,但想将其存储在文件中。我怎么能这样做?

2 个答案:

答案 0 :(得分:6)

使用subprocess.call,您可以将输出(stdout,stderr或两者)直接传送到文件中:

import subprocess
subprocess.call("java -jar xyz.jar", shell=True, stdout=open('outfile.txt', 'wt'), stderr=subprocess.STDOUT)

请注意,我添加了shell=True参数,如果您的应用程序需要特定于shell的变量(例如Java所在的位置),则需要该参数。

另请注意,在上面的调用中,输出流按如下方式处理:

  • stderr stream通过管道传输到stdout,
  • stdout通过管道输出文件

有关流配置的更多详细信息,请参见subprocess manual page

答案 1 :(得分:0)

请勿使用os.system,而是使用subprocess

import subprocess

output = subprocess.check_output(["java", "-jar", "xyz.jar"])

file = open('file.txt', 'w+')
file.write(output)
file.close()