[python] 외부 프로세스 실행한 결과를 string을 받기

#!/usr/bin/python

import subprocess

def getCallResult(cmdARGS):

  fd_popen = subprocess.Popen(cmdARGS.split(), stdout=subprocess.PIPE).stdout

  data = fd_popen.read().strip()

  fd_popen.close()

  return data

data = getCallResult(“ls -la”)

print (data)

결과)

$ python test.py

합계 524

drwxrwxr-x  4 parkmo parkmo   4096  1월 27 16:30 .

drwxrwxr-x 45 parkmo parkmo   4096  1월 27 11:59 ..

drw-rw-r–  1 parkmo parkmo    421  1월 27 12:01 test.py

..

..

1) subprocess.Popen 호출할때 split으로 하지 않으려면 아래처럼 []로 해줘야한다.

subprocess.Popen([“ls”, “-la”], stdout=subprocess.PIPE).stdout

2) string으로 넣지 않고 하려면 그냥

  fd_popen = subprocess.Popen(cmdARGS.split(), stdout=subprocess.PIPE).wait()

식으로 해서 Block걸고 해도 되고 NonBlock도 지원하니까 필요에 따라 NonBlock으로 해도 되고 한다. 

(테스트는 파이썬 2.4 대에서 했다.)

3.x대 부터인가 에서는 print할때 무조건 print(…) 형태를 써야함에 주의.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다