2012-09-25 2 views
2

나는 os.popen과 비슷한 방법을 시도했다. 그러나 그것은 나를 위해 일하는 것 같지 않습니다. 나는 명령어 'echo xxxx''java -version' 사이에 다른 것이 있으면 궁금합니다. 어떻게 'java -version'을 파이썬 코드로 출력 할 수 있습니까?파이썬을 통해 'java -version'출력을 얻는 방법

+2

subprocess.check_output http://docs.python.org/library/subprocess.html#module-subprocess – avasal

+1

는'subprocess' 모듈의 설명서를 잘 읽고 될 수 있습니다. –

+1

아무도 [os.popen에 대한 문서] (http://docs.python.org/library/os.html#os.popen)를 읽지 못합니까? 그것은 말합니다 : "버전 2.6 이후 사용되지 않음 :이 기능은 더 이상 사용되지 않습니다. 서브 프로세스 모듈을 사용하십시오." – Matthias

답변

6
import subprocess 
sp = subprocess.Popen(["java", "-version"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) 
print sp.communicate() 
print sp.wait() 

가 이동하는 실제 방법입니다.

더 간단한 방법은

print subprocess.check_output(["java", "-version"], stderr=subprocess.STDOUT) 
-2

예, 차이점은 java -version이 stderr 스트림으로 이동한다는 것입니다. 보십시오 popen3 http://docs.python.org/library/popen2.html

+1

"버전 2.6 이후 사용되지 않음 :이 모듈은 더 이상 사용되지 않습니다. 서브 프로세스 모듈을 사용하십시오." – Matthias

+0

그럼, 아직도 일반적으로 사용됩니다. 많은 ppl이 os.popen을 사용하는데, 나는 그것이 2.x 브랜치에서 사라지는 것을 의심한다. – CrazyCasta

+1

뭔가가 사용되지 않을 경우 권장하지 않습니다. – Matthias

1

차이점은 java -versionstdout 대신 stderr으로 인쇄됩니다. 당신은 (더 나은) subprocess.Popen을 사용하여 명령의 stderr를 확인하거나 stdout 수동 stderr에 리디렉션 할 수 있습니다 :

java -version 2>&1 
+0

덕분에, 그것은 나를 위해 일한다 ~~~ –

관련 문제