2017-09-22 4 views
0

나는 이것에서 새롭다, 나는 파일 원본에있는 자바 버전의 산출을 쓰고 싶다. "java -version"의 출력을 파이썬을 사용하여 텍스트 파일에 쓰려면 어떻게해야합니까?

나는 내가 본 다른 게시물에서 이것을 사용 :

import subprocess 

with open('C:\Python27\ping.txt','w') as out: 
    out.write(subprocess.check_output("ping www.google.com")) 

그리고 그 일을, 텍스트 파일에 "핑 (ping) www.google.com을"의 출력을 썼다.

나는 "ping www.google.com"을 "java -version"으로 변경하면 모든 것이 해결 될 것이라고 생각했습니다. 이처럼

는 :

import subprocess 

with open('C:\Python27\java.txt','w') as out: 
    out.write(subprocess.check_output("java -version")) 

하지만이 저를 작동하지 않았다, 이것은 단지 콘솔로 "자바 -version"의 출력을 인쇄하고, 텍스트 파일에 기록하지 않았다.

아무도 도와 줄 수 있습니까?

+0

버전은 stderr'하지'stdout''로 이동합니다. [내 대답] (https://stackoverflow.com/a/31808419/1084416)에서 [이 질문] (https://stackoverflow.com/questions/31807882/get-java-version-number-from-python)을 참조하십시오. –

답변

0

당신은 표준 오류를 사용을 시도 할 수 있습니다 :

from subprocess import Popen, PIPE, STDOUT 

with open('C:\Python27\java.txt','w') as out: 
    cmd = 'java -version' 
    p = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE) 
    out.write(p.stderr.read()) 
+0

여기'Popen'에 의지 할 이유가 없습니다.'stderr = subprocess.STDOUT'을'subprocess.check_output'에 충분하게 전달할 수 있습니다. –

+0

@JonClements 나는 좋은 연습이 어떤 경우에도'Popen'을 사용하는 것이라고 믿습니다. 비 차단. 하지만 당신이 맞습니다 -'stderr = subprocess.STDOUT'이면 충분합니다. –