일반적으로 표준 입력을 표준 출력 스트림으로 변환하는 프로그램은 필터, 두 프로그램을 연결하는 메커니즘은 파이프라고 생각하면 된다. 예를 들어 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 |
범위의 하한 값 범위의 상한 값 현재 값 |
이 프로그램은 명령 줄 인수로 정수 lo
와 hi
를 입력받고, 파일 끝에 도달할 때까지 표준 입력에서 정수를 읽어 lo
와 hi
범위(lo
와 hi
포함)에 있는 숫자를 출력한다. 따라서 이런 프로그램을 필터라고 한다. 스트림의 길이에는 제한이 없다.
% 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]