더북(TheBook)

14.8 파이프

대부분 운영체제는 명령줄 인터페이스, 보통은 (shell)이라는 것을 제공한다. 셸은 일반적으로 파일 시스템을 이동하거나 애플리케이션을 실행할 수 있는 명령을 제공한다. 예를 들어 유닉스에서는 cd 명령으로 디렉터리를 변경하고, ls로 디렉터리의 내용을 표시하고, firefox를 입력해서 웹 브라우저를 실행한다.

셸에서 실행할 수 있는 모든 프로그램은 파이썬에서 파이프 객체(pipe object)를 사용해서 실행할 수 있으며, 파이프 객체는 실행 중인 프로그램을 표현한 것이다.

예를 들어 유닉스 명령어 ls -l은 일반적으로 현재 디렉터리의 내용을 긴(long) 형식으로 자세하게 표시한다. os.popen**으로 ls를 실행할 수 있다.

>>> cmd = 'ls -l'

>>> fp = os.popen(cmd)

인수는 셸 명령을 담은 문자열이다. 파일 열기처럼 동작하는 객체가 반환값이 된다. ls 프로세스의 출력을 readline으로 한 번에 한 줄씩 읽거나 read를 사용해 한 번에 전체를 읽을 수 있다.

>>> res = fp.read()

 


 

** 역주 popen은 이제 폐기(deprecated) 상태이므로 popen 사용을 그만두고 subprocess 모듈을 사용해야 한다. 그러나 간단한 경우에 쓰기에는 subprocess가 생각보다 복잡하다고 생각한다. 그래서 여기서는 popen을 사용할 수 없게 될 때까지는 popen을 사용하기로 했다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.