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