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

3 投票
2 回答
631 浏览
提问于 2025-04-18 08:13

这是我用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手册

撰写回答