我正在使用一些东西从 python 运行一个 jar 文件
import subprocess
subprocess.call(['java', '-jar', 'tool.jar'])
然后我想将输出保存到文件中,但问题是原始java代码的输出被发送到System.err.println(output)
。我很想修改原始的 java 文件,但这不是一个选择。
如何将此输出发送到文件?我尝试过:
subprocess.call(['java', '-jar', 'chattool.jar', '>', 'out.txt', '2','>','err.txt'])
以及
subprocess.call(['java', '-jar', 'chattool.jar', '&>', 'test.txt'])
但没有人重定向输出。可以在 python 中执行此操作吗?
最佳答案
您可以使用 Popen() 将 stdout/stderr 通过管道传输到文件中:
_stdout = open('/tmp/chattool.stdout.txt', 'w')
_stderr = open('/tmp/chattool.stderr.txt', 'w')
cmd = subprocess.Popen('java -jar chattool.jar', stderr=_stderr, stdout=_stdout, cwd=_cwd, shell=True)
cmd.communicate()
关于java - 将 jar 输出通过管道传输到 python 中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59761135/