본문 바로가기

python

파이썬 모둘-subprocess

Subprocess 모듈


Subprocess모듈은 파이썬에서 서브 프로세스를 생성할때 사용하는 모듈입니다. 즉 파이썬 프로그램에서 새로운 프로그램을 실행할수 있도록 하는 모듈입니다. 이 모듈은 (os.system, os.spawn*)등을 대체하기 위해서 만들어 졌습니다.


사용방법-

서브 프로세스를 만들기 위해서는 편의 함수들을 사용하거나 세부적인 제어를 위해 Popen 인터페이스를 직접사용하기도 합니다.


subprocess.call 함수 - 간단한 서브 프로세스 실행을 위해 사용됩니다.


subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False, timeout=None)


args - 명령행에 문자열 혹은 입력될 인자들을 공백으로 자른 리스트 즉, 명령어를 인자로 주면 된다

stdin,stdout,stderr - 각각 표준 입력, 표준 출력, 표준 에러로서 표준입출력 리다이렉션에 대응합니다. 보통은 생략합니다.

shell-서브 쉘을 실행할 것인지 안할것인지를 결정합니다.

timeout-서브프로세스의 대기시간을 정해줍니다.


ex ) subprocess.call(["ls","-l"]) -> 파일목록이 출력된다.


subprocess.check_call - 결과값 체크하기


subprocess.call()함수가 정상적으로 실행되고 종료되면 0을 리턴하여 준다. 하지만 비정상적으로 종료되었을때는 0이아닌 다른수이고 예외처리를 해줄때 사용


subprocess.check_output - 출력되는 문자열이 필요할때


서브프로세스를 실행하고 그 출력 문자열을 리턴합니다. 따라서 정상적으로 실행되고 정상적으로 종료되었는지를 알고 싶은것이 아니라 출력된 결과를 문자열로 반환합니다.


Popen 클래스 - 프로세스 생성과 관리모듈은 Popen 클래스를 통해서 관리하며 제공되는 편의 함수들만으로 다룰 수 없는 케이스를 커버 할 때, 세밀한 옵션들에 대해서 직접 제어하고자 할 때 사용할 수 있다.


class subprocess.Popen(args, bufsize=-1, excutable=None,stdin=None,stdout=None, stderr=None, preexec_fn=None, close_fds=None, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0, restoreflags=0, restore_signals=True, start_new_session=False, pass_fds=())


'python' 카테고리의 다른 글

내 맘대로 쓰는 파이썬1  (0) 2018.09.01