http://www.incodom.kr/파이썬/라이브러리/subprocess

사용법

단순한 서브프로세스 실행만을 원한다면 call 함수를 사용한다. call 함수 사용시 실행된 서브프로세스가 종료되기 기다렸다가 종료되면 결과값을 화면에 출력해준다. 다음은 call 함수에 사용되는 옵션들이다 .

call

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

call 예제

>>>subprocess.call(["ls", "-al"])

total 200
drwxr-xr-x 7 kbae kbae  4096 Oct  1 22:13 .
drwxr-xr-x 3 kbae kbae  4096 Oct  1 21:42 ..
drwxr-xr-x 8 kbae kbae  4096 Oct  1 21:09 .git

check_output

subprocess.check_output(args, *, stdin=None, stderr=None, shell=False, universal_newlines=False)

아래는 check_output 사용 예제

>>>subprocess.check_output (['ls', '-al'] )

b'total 8\\ndrwxr-xr-x. 2 root root 4096 10\\xec\\x9b\\x94  8 17:58 .\\ndrwxr-xr-x. 6 root root 4096 10\\xec\\x9b\\x94  8 17:58 ..\\n'

Popen

Popen 은 다양한 옵션들을 통해 call, check_output 등 보다 유연하게 사용할 수 있다.

subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)

아래는 Popen 함수 사용 예제

>>> proc = subprocess.Popen(['ls', '-al'], stdout=subprocess.PIPE, stderr=subprocess.PIPE )
>>> out = proc.communicate()
>>> out
(b'total 8\\ndrwxr-xr-x. 2 root root 4096 10\\xec\\x9b\\x94  8 17:58 .\\ndrwxr-xr-x. 6 root root 4096 10\\xec\\x9b\\x94  8 17:58 ..\\n', b'')

Popne과 communicate

https://brownbears.tistory.com/214