No se puede capturar la salida de java -version usando os.popen

Aqui esta mi codigo

    f = os.popen("java -version")
    for i in f.readlines():
        print "result, ", i,

Básicamente quiero que la salida de java -version se almacene en f. Lo que sucede es que, después de que se ejecuta la primera línea del script, la información de la versión de Java se imprime, pero no se almacena en f, por lo tanto, la tercera línea de código no se ejecuta en absoluto. Este código funciona para otros comandos como "ls -la", pero no para java -version. ¿Alguna idea de por qué?

Gracias por adelantado.

Respuesta 1

Como java -versionva a stderr, no a stdin, debe redirigirlo:

f = os.popen("java -version 2>&1")
for i in f.readlines():
    print "result, ", i,

mejor aún, use el módulo de subproceso , que está diseñado para facilitar este tipo de cosas:

print subprocess.check_output("java -version", stderr=subprocess.STDOUT, shell=True)
Respuesta: 2

Tengo que averiguar la edad desde la fecha de nacimiento colocada en una mesa en una clase de probadores. Esto significa que tengo que obtener la fecha del día actual de ahora a la fecha de una determinada fecha elegida. Por otra parte, yo ...

Tengo algunos problemas para crear un proyecto de Kotlin que utiliza funciones de Java 9. Sé que Kotlin solo permite la generación de código de bytes Java 8, pero de acuerdo con kotlinlang.org, debería admitir esta funcionalidad ...

Lo que pretendo hacer como resultado final es que el usuario pueda escribir algo así como un cuadro de texto y una variedad de opciones para que aparezcan a medida que el usuario escribe letras. Como ejemplo, el usuario podría comenzar a escribir ...

Me gusta controlar 'sooperlooper' desde java, un looper de sonido. Esto usa el protocolo OSC. El primer intento fue la biblioteca Java OSC, pero esto no hace nada. Ahora estoy tratando de JNA para envolver liblo.so El programa que '...