簡體   English   中英

管道 jar 輸出到 python 中的文件

[英]Pipe jar output to file in 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() 

我也能夠使用

import subprocess
with open('test.txt', 'w+') as f:
    subprocess.run(['java', '-jar', 'tool.jar'], stderr=f)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM