본문으로 건너뛰기

Python에서 Shell 명령어, 스크립트 실행

파이썬에서 쉘 명령어를 실행하여 결과를 출력하거나 프로그램에서 결과를 받을 수 있습니다. 또는, 로컬에 저장된 쉘 스크립트 파일을 파이썬에서 실행시킬 수 있습니다.

1. 파이썬에서 Shell 명령어 실행

파이썬에서 다양한 방법으로 쉘 명령어를 실행하고, 실행 결과를 확인할 수 있습니다.

1.1 os.system()

os.system()는 인자로 전달된 쉘 명령어를 실행하고 결과를 콘솔에 출력합니다.

import os

os.system('ls -l')

1.2 os.popen()

os.popen()은 인자로 전달된 쉘 명령어를 실행합니다. 결과는 리턴되는 stream으로 읽을 수 있습니다. 화면에 출력하려면 print()를 사용해야 합니다.

import os

stream = os.popen('ls -l')
output = stream.read()
print(output)

1.3 subprocess.run()

subprocess.run()은 인자로 전달된 명령어를 실행합니다. 명령어 인자는 아래와 같이 문자열 배열로 전달해야합니다. 실행 결과는 콘솔에 출력됩니다.

import subprocess

subprocess.run(["ls", "-l"])

만약 실행 결과를 콘솔에 바로 출력하지 않고 프로그램에서 받고 싶을 때는, 아래와 같이 인자를 입력하시면 됩니다.

import subprocess

result = subprocess.run(["ls", "-l"], stdout=subprocess.PIPE, text=True)
print(result.stdout)

만약 쉘 명령어는 실행하지만 결과는 콘솔에 출력하고 싶지 않을 때, 아래와 같이 인자를 입력하시면 됩니다.

import subprocess

subprocess.run(["ls", "-l"], stdout=subprocess.DEVNULL)

2. 파이썬에서 Shell 스크립트 파일 실행

쉘 명령어 뿐만 아니라 쉘 스크립트 파일을 파이썬에서 직접 실행시킬 수 있습니다.

먼저 아래와 같이 test.sh라는 파일 이름으로 Shell 스크립트를 작성하고, 파이썬에서 스크립트 파일을 실행해보겠습니다.

#!/bin/bash

echo "Hello," $1

아래 파이썬 코드는 쉘 스크립트 파일을 실행시키는 예제이며, 터미널에서 ./tmp/test.sh Python 라는 명령어를 입력한 것과 같습니다. subprocess.run(["shell file", "arg1", "arg2"...])는 입력된 인자들과 함께 shell 스크립트 파일을 실행합니다. 실행 결과는 콘솔에 출력됩니다.

import subprocess

subprocess.run(["/tmp/test.sh", "Python"])

Output:

Hello, Python