몇 가지 Python 스크립트가 있으며 다시 작성하려고합니다. 나는 그들 모두와 같은 문제가 있습니다.
적절한 유닉스 도구처럼 동작하도록 프로그램을 작성하는 방법은 분명하지 않습니다.
왜냐하면 이건
$ cat characters | progname
이
$ progname characters
동일한 출력을 생성해야합니다.
파이썬에서 찾을 수있는 가장 가까운 것은 파일 입력 라이브러리였습니다. 불행히도 파이썬 스크립트를 다시 작성하는 방법을 실제로 보지 못합니다. 모두 다음과 같습니다.
#!/usr/bin/env python
# coding=UTF-8
import sys, re
for file in sys.argv[1:]:
f = open(file)
fs = f.read()
regexnl = re.compile('[^\s\w.,?!:;-]')
rstuff = regexnl.sub('', fs)
f.close()
print rstuff
파일 입력 라이브러리는 stdin이 있으면 stdin을 처리하고 파일이 있으면 파일을 처리합니다. 그러나 단일 라인을 반복합니다.
import fileinput
for line in fileinput.input():
process(line)
나는 정말로 그것을 얻지 못한다. 작은 파일을 다루거나 파일을 많이 사용하지 않으면 분명히 보일 수 있습니다. 그러나 내 목적으로는 위와 같이 단순히 전체 파일을 열고 문자열로 읽는 것보다 훨씬 느립니다.
현재 위와 같은 스크립트를 실행합니다.
$ pythonscript textfilename1 > textfilename2
그러나 나는 파이프 (그리고 그 형제들)를 파이프에서 실행할 수 있기를 원합니다.
$ grep pattern textfile1 | pythonscript | pythonscript | pythonscript > textfile2