Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Python

파이썬 프로그램에서 유닉스 명령어 실행하는 법

by
Length:ShortLanguages:

Korean (한국어) translation by Dae-yeop Lee (you can also view the original English article)

유닉스(Unix)는 켄 톰슨(Ken Thompson)과 데니스 리치(Dennis Ritchie)가 AT&T 벨 연구소에서 1969년 경에 개발한 운영체제입니다. 다양한 작업을 수행하는 데 사용할 수있는 흥미로운 유닉스 명령어가 많습니다. 문제는 파이썬 프로그램에서 직접 그러한 명령어를 실행할 수 있느냐입니다. 이 튜토리얼에서는 바로 이러한 방법을 보여드리고자 합니다.

유닉스 명령어 ls는 디렉터리 내의 모든 파일을 나열합니다. 파이썬 스크립트에 ls를 넣으면 프로그램을 실행했을 때 다음과 같은 결과가 출력됩니다.

이것은 파이썬 인터프리터가 ls를 변수로 취급하고 이를 정의(즉, 초기화)해야 하고 유닉스 명령으로 취급하지 않았음을 보여줍니다.

os.system()

이 문제의 한 가지 해결책은 파이썬의 os 모듈에서 제공하는 os.system()을 사용하는 것입니다.

문서에 언급돼 있는 바와 같이 os.system()은 다음과 같은 역할을 합니다.

하위 셸에서 명령어(문자열)을 실행한다. 이것은 표준 C 함수인 system()을 호출하는 방식으로 구현돼 있고 system()과 동일한 제약을 갖고 있다.

따라서 파이썬에서 ls 명령어를 다음과 같이 실행할 수 있습니다.

이렇게 하면 .py 프로그램이 위치한 현재 디렉터리의 파일 목록이 반환됩니다.

또 다른 예제를 살펴봅시다. 현재 날짜와 시간을 반환하고 싶다면 다음과 같이 유닉스 명령어인 date를 사용할 수 있습니다.

위 스크립트를 실행했을 때 저는 다음과 같은 결과를 얻었습니다.

Tue May 24 17:29:20 CEST 2016

call()

os.system()은 작동하지만 이 방법은 약간 오래된 것으로 간주되고 지원 중단됐으므로 권장되지 않습니다. 더 권장하는 방법은 파이썬의 subprocess 모듈에서 제공하는 call(args) 함수를 사용하는 것입니다. 이 함수에 대해서는 다음과 같이 설명돼 있습니다.

args에 기술된 명령을 실행한다. 명령이 완료될 때까지 대기한 다음 returncode 속성을 반환한다.

이 방법으로 ls 유닉스 명령을 실행하려면 다음과 같이 하면 됩니다.

subprocess 모듈을 사용해 날짜를 반환하는 방법을 살펴봅시다. 하지만 이번에는 예제를 좀 더 재미있게 만들어 보겠습니다.

위 예제는 다음과 같이 check_output()을 이용해 더 간단하게 실행할 수 있습니다.

위 스크립트의 출력 결과는 다음과 같습니다.

It is Tue May 24 19:14:22 CEST 2016

위 예제는 다른 subprocess 함수를 사용할 때의 유연성과 추가 연산을 수행하기 위해 변수에 결과를 전달하는 방법을 보여줍니다.

결론

이 튜토리얼에서 살펴봤듯이 유닉스 명령은 subprocess 모듈을 이용해 호출하고 실행할 수 있습니다. 이 모듈은 다양한 함수를 통해 유닉스 명령을 이용할 때 많은 유연성을 제공합니다. 이 모듈과 이 모듈에서 제공하는 다양한 함수에 관해서는 파이썬 문서에서 더 자세히 배울 수 있습니다.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.