웹사이트 검색

Python 시스템 명령 - os.system(), subprocess.call()


이 튜토리얼에서는 Python 시스템 명령에 대해 배웁니다. 이전에는 Python Random Number에 대해 배웠습니다.

파이썬 시스템 명령

Python으로 프로그램을 만드는 동안 프로그램에 대한 일부 셸 명령을 실행해야 할 수 있습니다. 예를 들어 Pycharm IDE를 사용하는 경우 github에서 프로젝트를 공유하는 옵션이 있음을 알 수 있습니다. 그리고 파일 전송은 명령줄을 사용하여 작동하는 git에 의해 수행된다는 것을 알고 있을 것입니다. 따라서 Pycharm은 이를 수행하기 위해 백그라운드에서 일부 셸 명령을 실행합니다. 그러나 이 자습서에서는 Python 코드에서 셸 명령을 실행하는 방법에 대한 몇 가지 기본 사항을 배웁니다.

파이썬 os.system() 함수

os.system() 함수를 사용하여 시스템 명령을 실행할 수 있습니다. 공식 문서에 따르면,

이는 표준 C 함수 system()을 호출하여 구현되며 동일한 제한이 있습니다.

그러나 명령이 출력을 생성하면 인터프리터 표준 출력 스트림으로 전송됩니다. 이 명령은 사용하지 않는 것이 좋습니다. 다음 코드에서는 시스템 명령 git --version을 사용하여 git의 버전을 확인하려고 시도합니다.

import os

cmd = "git --version"

returned_value = os.system(cmd)  # returns the exit code in unix
print('returned value:', returned_value)

git이 이미 설치된 우분투 16.04에서 다음 출력을 찾을 수 있습니다.

git version 2.14.2
returned value: 0

git version 명령 출력을 콘솔에 출력하는 것이 아니라 여기에서 콘솔이 표준 출력 스트림이기 때문에 출력됩니다.

파이썬 subprocess.call() 함수

이전 섹션에서 os.system() 함수가 제대로 작동하는 것을 보았습니다. 그러나 쉘 명령을 실행하는 방법은 권장되지 않습니다. Python 하위 프로세스 모듈을 사용하여 시스템 명령을 실행합니다. subprocess.call() 함수를 사용하여 쉘 명령을 실행할 수 있습니다. 이전 코드와 동일한 다음 코드를 참조하십시오.

import subprocess

cmd = "git --version"

returned_value = subprocess.call(cmd, shell=True)  # returns the exit code in unix
print('returned value:', returned_value)

Python subprocess.check_output() 함수

지금까지 파이썬의 도움으로 시스템 명령을 실행했습니다. 그러나 이러한 명령으로 생성된 출력을 조작할 수는 없습니다. subprocess.check_output() 함수를 사용하여 출력을 변수에 저장할 수 있습니다.

import subprocess

cmd = "date"

# returns output as byte string
returned_output = subprocess.check_output(cmd)

# using decode() function to convert byte string to string
print('Current date is:', returned_output.decode("utf-8"))

다음과 같은 출력이 생성됩니다.

Current date is: Thu Oct  5 16:31:41 IST 2017

따라서 위 섹션에서 파이썬 시스템 명령 실행에 대한 기본 아이디어에 대해 논의했습니다. 그러나 학습에는 제한이 없습니다. 원하는 경우 공식 문서에서 하위 프로세스 모듈을 사용하여 Python 시스템 명령에 대해 자세히 알아볼 수 있습니다.