더북(TheBook)

프로그램에서 호출한 stdio.write(), stdio.writeln(), stdio.writef() 함수는 이 파일 뒤에 텍스트를 추가한다. 이 명령을 실행하면 난수 천 개가 들어 있는 파일이 생성된다. 터미널 창에는 아무것도 나타나지 않고, 출력 스트림의 내용은 오른쪽 홑화살괄호(>) 뒤에 지정한 파일에 바로 저장된다. 파일에 저장된 내용은 나중에 읽을 수 있다. 그리고 이와 같이 리다이렉션하기 위해 randomseq.py(프로그램 1.5.1)는 전혀 바꿀 필요가 없다. randomseq.py는 표준 출력 스트림이라는 추상화된 장치에 출력할 뿐, 그 장치가 실제 어느 장치에 연결되어 있는지에는 전혀 영향을 받지 않는다. 이 메커니즘을 이용하면 우리가 작성한 어떠한 프로그램의 출력도 저장할 수 있다. 결과를 얻기 위해 시간을 상당히 들여 프로그램을 작성했다면 실행 결과도 나중에 참조하기 위해 저장하고 싶은 것은 당연하다. 최신 시스템에서는 운영 체제에서 제공하는 복사해 붙여넣기 메커니즘을 이용해 출력 결과를 저장할 수 있지만 출력 결과가 많을 때는 불편하다. 이와 반대로 리다이렉션은 대량의 데이터를 쉽게 처리하도록 만들어졌다.

파일을 표준 입력으로 리다이렉션하기 표준 입력을 리다이렉션해 프로그램이 터미널 대신 파일에서 데이터를 입력받게 할 수 있다. 다음 명령은 data.txt 파일에서 숫자들을 읽어 평균값을 출력한다.

% python3 average.py < data.txt

 

▲ 그림 1.5.5 파일을 표준 입력으로 리다이렉션하기

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