Adam_G:
Estoy corriendo un archivo jar de Python usando algo a este
import subprocess
subprocess.call(['java', '-jar', 'tool.jar'])
Entonces yo desea guardar el resultado en un archivo, pero el problema es que el código de Java original tiene la salida de ser enviado a System.err.println(output)
. Me encanta para modificar el archivo de Java original, pero esto no es una opción.
¿Cómo puedo enviar esta salida a un archivo? Yo he tratado:
subprocess.call(['java', '-jar', 'chattool.jar', '>', 'out.txt', '2','>','err.txt'])
tanto como
subprocess.call(['java', '-jar', 'chattool.jar', '&>', 'test.txt'])
pero ninguno de los dos vuelve a dirigir la salida. ¿Es posible hacer esto dentro de pitón?
Maurice Meyer:
Puede stdout tubería / stderr en un archivo usando Popen () :
_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()