파이프를 사용해 표준출력 실행결과 입력 받기
표준 입출력을 파이프로 연결해서 다른 프로그램의 출력 내용을 읽어오려고 한다.
물론 기본 도큐먼트에도 좋은 설명과 예제들이 잘 정리되어있다.
기본적으로 subprocess 라는 라이브러리를 임포트 하면 되므로
자세한 사항은 아래의 링크를 참고하기 바라고
https://docs.python.org/2/library/subprocess.html
import subprocess
import sys
def usage():
print "\n"
print sys.argv[0], " ", "exe file\n"
exit()
exe_file = ""
if len(sys.argv) <= 1:
exe_file = ""
usage()
else:
exe_file = sys.argv[1]
p1 = subprocess.Popen(["dumpbin", "/disasm:nobytes", exe_file], stdout=subprocess.PIPE).stdout
count = 0
for line in p1:
#print line
count = count + 1
print "Total Count : ", count
아규먼트 입력을 받아서 서브 프로세스의 입력 값으로 사용하기 위해
sys 라이브러리를 임포트하여 첫번째 아규먼트를 입력값으로 처리한다.
if len(sys.argv) <= 1:
exe_file = ""
usage()
else:
exe_file = sys.argv[1]
서브프로세스를 실행하면서 표준출력을 파이프로 연결하겠다고 지정하고
p1을 표준출력으로 지정한다.
p1 = subprocess.Popen(["dumpbin", "/disasm:nobytes", exe_file], stdout=subprocess.PIPE).stdout
표준출력을 출력하고 라인수를 카운트 한다.
for line in p1:
#print line
count = count + 1
파이프 개념만 알면 간단한 내용이지만
표준 문서에는 서브프로세스간의 파이프 연결만 설명되어있어
참고용으로 남겨둔다.
'Python' 카테고리의 다른 글
Python에서 QT 사용하기 (pyqt) (0) | 2016.05.20 |
---|---|
Python 문자코드 다루기 (아스키 코드 변환) (0) | 2016.05.20 |
Opencv Background Subtractor (MOG) (0) | 2016.04.27 |
초간단 라즈베리파이(리눅스)에서 시리얼통신 읽어오기 (0) | 2016.01.26 |
초간단 파이썬으로 구현한 모드버스(Modbus) (4) | 2014.12.16 |