在Python中将命令行输出导出到文件
这是我用Python执行一个jar文件的代码:
import os
os.system("java -jar xyz.jar")
我可以在终端看到输出,但我想把它存储到一个文件里。我该怎么做呢?
2 个回答
0
不要使用 os.system
,建议使用 subprocess 代替。
import subprocess
output = subprocess.check_output(["java", "-jar", "xyz.jar"])
file = open('file.txt', 'w+')
file.write(output)
file.close()
6
使用 subprocess.call 这个功能,你可以把程序的输出(比如正常输出和错误输出)直接写入文件里:
import subprocess
subprocess.call("java -jar xyz.jar", shell=True, stdout=open('outfile.txt', 'wt'), stderr=subprocess.STDOUT)
注意,我在这里加了 shell=True
这个参数,如果你的程序需要用到一些特定于命令行的变量(比如Java的安装位置),这个参数是必须的。
另外,在上面的调用中,输出流的处理方式是这样的:
- 错误输出(stderr)会被送到正常输出(stdout),
- 正常输出会被写入到指定的文件(outfile)
关于输出流的更多详细配置,可以查看 subprocess手册。