구글광고_헤더쪽


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

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

덧글

  • 박모친구 2012/01/30 09:16 # 삭제

    비슷하지만 좀 더 심플한 듯.

    hash_cmd = "/usr/bin/md5sum " + chunk_path + " | awk '{print $1 " " $2}'";
    hash_pipe = Popen(hash_cmd, shell=True, stdout=PIPE);
    hash = hash_pipe.stdout.read();
※ 로그인 사용자만 덧글을 남길 수 있습니다.




구글광고_사이드

Analytics