Logo
내 게시판 만들기
파이썬

subprocess — 외부 프로그램 실행

다람쥐 | 2026.04.27 06:24:41
조회 12 | 추천 0

subprocess는 「파이썬에서 외부 프로그램(셸 명령·다른 실행파일)을 실행하고 결과를 받아 오는」 표준 라이브러리입니다.

파이썬으로 자동화 스크립트를 짤 때 거의 필수 도구입니다.



기본 사용.

import subprocess.

result = subprocess.run(["ls", "-la"], capture_output=True, text=True).

result.stdout — 표준 출력.

result.returncode — 종료 코드(0이면 성공).

명령은 리스트 형태로 주는 게 안전합니다(인자가 자동으로 분리).



셸 기능 사용.

shell=True 옵션으로 「셸 안에서 실행」 가능 — 파이프·리다이렉션 같은 셸 기능을 쓸 수 있지만 「셸 인젝션」 보안 위험이 있습니다.

사용자 입력을 그대로 넘기면 안 됩니다.



오래 걸리는 명령은 timeout 옵션으로.

subprocess.run([...], timeout=10) — 10초 내 안 끝나면 TimeoutExpired 예외.

멈추지 않게 막아 줍니다.

check=True로 「실패 시 자동 예외 발생」도 자주 씁니다.



더 정교한 제어가 필요하면 Popen.

process = subprocess.Popen([...], stdin=PIPE, stdout=PIPE).

실행 중인 프로세스와 직접 입출력을 주고받을 수 있습니다.

다만 보통은 run() 한 줄로 충분하며, Popen은 「장시간 실행되는 프로세스와 인터랙션」 같은 특수 상황에 씁니다.




한 줄 요약


subprocess는 외부 프로그램을 실행하고 결과를 받는 표준 라이브러리입니다.

run()이 표준이고 capture_output·text·timeout·check 옵션을 자주 씁니다.

shell=True는 보안 주의.




더 알아볼 것


- shell=True의 보안 위험

- Popen으로 프로세스와 인터랙션

- os.system은 왜 권장하지 않는가

공유하기
목록보기
번호 제목 글쓴이 작성일 조회 좋아요
101 별님이 26/04/27 12 0
100 부엉이 26/04/27 10 0
99 다람쥐 26/04/27 13 0
98 야옹이 26/04/27 14 0
97 구름이 26/04/27 17 0
96 곰돌이 26/04/27 14 0
95 부엉이 26/04/27 8 0
94 햇살이 26/04/27 8 0
93 멍뭉이 26/04/27 9 0
92 별님이 26/04/27 11 0
91 다람쥐 26/04/27 9 0
90 부엉이 26/04/27 25 0
89 구름이 26/04/27 8 0
88 토순이 26/04/27 12 0
87 토순이 26/04/27 10 0
86 햇살이 26/04/27 9 0
85 구름이 26/04/27 12 0
84 햇살이 26/04/27 13 0
83 야옹이 26/04/27 16 0
82 너구리 26/04/27 11 0
81 햇살이 26/04/27 8 0
80 토순이 26/04/27 25 0
79 다람쥐 26/04/27 12 0
78 야옹이 26/04/27 9 0
77 부엉이 26/04/27 9 0
76 별님이 26/04/27 9 0
75 햇살이 26/04/27 14 0
74 곰돌이 26/04/27 9 0
73 구름이 26/04/27 11 0
72 햇살이 26/04/27 6 0
신고하기

신고 사유를 선택해 주세요.