#!/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(...) 형태를 써야함에 주의.
'IT > 프로그래밍' 카테고리의 다른 글
[vim] vi 편집기 실행시 마지막 편집한 라인으로 커서 놓기 (0) | 2023.09.14 |
---|---|
Local변수가 Stack 어떤 순서로 쌓이는지 조사 (0) | 2023.09.13 |
[Ajax/js] CORS (Cross-Origin Resource Sharing) 하는 방법 (0) | 2023.09.13 |
java/jsp 해당 메소드가 있는지 체크 (0) | 2023.09.13 |
[svn] update칠때 날짜와 시간으로 하기 (0) | 2023.09.13 |