java - 将 jar 输出通过管道传输到 python 中的文件

标签 java 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 中执行此操作吗?

最佳答案

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

相关文章:

python - 在python中使用xslt转换多个xml文件

java - 如何在Java中使用正则表达式进行模式匹配?

java - Camel mybatis 组件仅支持列表参数,该参数必须命名为 'list' ?

java - Android Studio 3.0 (Java 1.8) 无法识别 java.util.Base64

Python Pyserial 串行缓冲区

Python 装饰器接受任意数量的函数作为参数并返回函数的组合

java - 无法从 Maven 存储库中找到 play-services-maps.jar - React Native

java - MySQL 触发器通过直接插入工作,但在通过 Hibernate 提交时不工作

python - 在 Python 中遍历 HTML DOM

python mmap.error : Too many open files. 怎么了?