[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(...) 형태를 써야함에 주의.