SW 개발

python subprocess 간단예제 - stdio, stderr 입력받기

. . . 2022. 8. 18. 16:28
반응형

python subprocess

간단하게 shell (cli) 로 되어있는 기능들을 호출하여 써야할 때가 있다.

그럴때는, 해당 파이썬 모듈을 설치하고 사용하는것 보다는 subprocess 모듈을 사용하는것이 속편하다.

간단예제

subprocess 를 간단하기 wrapping 하여 사용하면 편하다.

#!/usr/bin/python

import sys
import os

import subprocess

def run_sub_process(cmd, redirect_stdio=True):
    if redirect_stdio == True:
        ps = subprocess.Popen('%s'%(cmd), shell=True,stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True)
    else:
        ps = subprocess.Popen('%s'%(cmd), shell=True,universal_newlines=True)

    out, err = ps.communicate()

    res = {}
    res['return_code']  = ps.returncode

    if out is not None :
        res['stdouts'] = out
    if err is not None :
        res['stderrs'] = err

    return res
  • 코딩설명
    • redirect_stdio : subprocess() 호출시 stdio / stderr 를 함수에서 리턴받을지 사용하는 옵션이다.

사용예

sub_process_ret = run_sub_process('ls -al')
if sub_process_ret['return_code'] == 0 :
    print('process succcess~')
    print('results -----')
    print(sub_process_ret['stdouts'])

stdio / stderr 를 갖고오는 방법들이 많지만... 위의 방법이 가장간단하고 잘동작하는것같다.

...

반응형