いくつかのPythonスクリプトがあり、それらの書き直しに取り組んでいます。私はそれらすべてに同じ問題を抱えています。
適切なUNIXツールのように動作するようにプログラムを記述する方法は明らかではありません。
これは
$ cat characters | progname
この
$ progname characters
同じ出力を生成するはずです。
Pythonで見つけられた最も近いものはfileinputライブラリでした。残念ながら、Pythonスクリプトを書き換える方法は実際にはわかりません。これらはすべて次のようになります。
#!/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