더북(TheBook)

일반적으로 표준 입력을 표준 출력 스트림으로 변환하는 프로그램은 필터, 두 프로그램을 연결하는 메커니즘은 파이프라고 생각하면 된다. 예를 들어 rangefilter.py(프로그램 1.5.4)는 명령 줄 인수 두 개를 입력받아 지정된 범위에 속한 숫자들만 표준 출력 장치에 출력한다. 표준 입력 스트림은 어떤 장치에서 들어온 측정 데이터이며, 현재 실험에서 분석하지 않을 데이터를 제거하기 위해 필터를 사용한다고 생각할 수 있다.

프로그램 1.5.4 간단한 필터 (rangefilter.py)

import sys
import stdio

lo = int(sys.argv[1]) hi = int(sys.argv[2])

while not stdio.isEmpty(): # 정수 하나를 처리한다. value = stdio.readInt() if (value >= lo) and (value <= hi): stdio.write(str(value) + ’ ‘) stdio.writeln()

lo
hi
value
범위의 하한 값
범위의 상한 값
현재 값

이 프로그램은 명령 줄 인수로 정수 lohi를 입력받고, 파일 끝에 도달할 때까지 표준 입력에서 정수를 읽어 lohi 범위(lohi 포함)에 있는 숫자를 출력한다. 따라서 이런 프로그램을 필터라고 한다. 스트림의 길이에는 제한이 없다.

% more rangedata.txt
3 1 4 1 5 9 2 6 5 3 5 8 9 7 9 3 2 3 8 4 6 2 6 4 3 3 8 3 2 7 9

% python3 rangefilter.py 5 9 < rangedata.txt 5 9 6 5 5 8 9 7 9 8 6 6 8 7 9

% python3 rangefilter.py 100 400 358 1330 55 165 689 1014 3066 387 575 843 203 48 292 877 65 998 358 165 387 203 292 [Ctrl]-[d]

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