[파이썬] subprocess 외부 프로그램과 상호작용하기

Python에서는 subprocess 모듈을 사용하여 외부 프로그램과 상호작용할 수 있습니다. 이 모듈을 사용하면 다른 프로그램을 실행하고, 입력과 출력을 처리하며, 실행 결과를 받아올 수 있습니다. 이를 통해 Python 코드에서 다른 프로그램의 기능을 이용하거나 외부 프로그램을 자동화할 수 있습니다.

외부 프로그램 실행하기

subprocess 모듈을 사용하여 외부 프로그램을 실행할 수 있습니다. subprocess.run() 함수를 사용하여 실행하려는 프로그램의 경로와 인자들을 전달합니다.

import subprocess

result = subprocess.run(['ls', '-l'], capture_output=True, text=True)

위의 예시에서는 ls 명령어를 실행하고, -l 옵션을 전달하여 현재 디렉토리의 파일 목록을 상세하게 출력하도록 했습니다. capture_output=True는 프로그램의 출력 결과를 result 변수에 저장하도록 하는 옵션입니다. text=True는 출력 결과를 텍스트 형식으로 반환하도록 지정합니다.

외부 프로그램의 출력 결과 받아오기

subprocess.run() 함수를 사용하면 외부 프로그램의 출력 결과를 받아올 수 있습니다. 위의 예시에서는 result 변수에 외부 프로그램의 출력 결과가 저장됩니다. 이 결과는 result.stdout 속성을 통해 접근할 수 있습니다.

import subprocess

result = subprocess.run(['echo', 'Hello, World!'], capture_output=True, text=True)
output = result.stdout
print(output)  # Hello, World!

위의 예시에서는 echo 명령어를 사용하여 “Hello, World!”를 출력하는 외부 프로그램을 실행한 뒤, 출력 결과를 output 변수에 저장하고 출력합니다.

외부 프로그램에 입력 값 전달하기

subprocess.run() 함수를 사용하여 외부 프로그램에 입력 값을 전달할 수 있습니다. 이때 input 옵션에 문자열 형태로 입력 값을 지정합니다.

import subprocess

result = subprocess.run(['grep', 'apple'], input='banana\napple\norange', capture_output=True, text=True)
output = result.stdout
print(output)  # apple

위의 예시에서는 grep 명령어를 사용하여 입력 값에서 ‘apple’ 문자열을 검색하는 외부 프로그램을 실행한 뒤, 검색된 결과를 output 변수에 저장하고 출력합니다.

외부 프로그램의 실행 여부 확인하기

subprocess.run() 함수의 반환 값으로는 외부 프로그램의 실행 여부를 나타내는 returncode 속성이 있습니다. 이 속성을 통해 외부 프로그램의 실행 결과를 확인할 수 있습니다.

import subprocess

result = subprocess.run(['ls', 'non-existing-file'], capture_output=True, text=True)
if result.returncode == 0:
    print('프로그램이 정상적으로 실행되었습니다.')
else:
    print('프로그램 실행이 실패하였습니다.')

위의 예시에서는 ls 명령어가 존재하지 않는 파일을 실행하도록 했습니다. returncode 속성을 통해 실행 결과를 확인하고, 반환 값이 0이 아니면 프로그램 실행이 실패했음을 알 수 있습니다.

외부 프로그램과 상호작용하는 것은 Python에서 다른 프로그램의 기능을 활용하거나 자동화하는 데에 유용합니다. subprocess 모듈을 사용하여 외부 프로그램과 쉽게 상호작용할 수 있으므로, 필요한 경우에는 이를 활용해보세요.