java - 管道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 中执行此操作?
解决方案
您可以使用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()
推荐阅读
- python - 如何在 Windows 10 上为 Discord Bot 修复 SSL 错误
- javascript - vue模板不能注入相关标签
- matlab - 有限元装配
- functional-programming - 球拍参数合同错误
- powershell - 如何在 PowerShell 中删除输出日志中的重复信息
- assembly - 为什么这个 Risc-V 二叉树检查器不起作用?
- python - 迭代 groupby 数据帧以在每一行中操作
- javascript - 在 JSON 中引用 Javascript 变量
- database - Libreoffice Base - 如何从宏调用控制事件?
- r - 在R中按组匹配而不替换