首页 > 解决方案 > 管道jar输出到python中的文件

问题描述

我正在使用一些东西从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 中执行此操作?

标签: javapython

解决方案


您可以使用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() 

推荐阅读