あなたが説明するプログラムの動作をシミュレートするためのシンプルなPythonプログラムを作成しました。ごくわずかでは、プログラムの仕組みを想定するのではなく、同じことを話す立場にいます。 (もちろん、あなたのプログラムが実際に私がここでそれを説明している方法で動作しない場合は、私を修正してください。)
#!/usr/bin/python
def read_a_file():
print('Type the contents of a file now.')
while True:
try:
s = raw_input('>')
except EOFError:
break
read_a_file()
read_a_file()
print('We have now read two files. Quitting.')
あなたは、このスクリプトを実行する最初のファイルの内容を入力し、CTRL-Dを打つ、二番目のファイルの内容を入力し、CTRL-Dを押すと、プログラムが終了することができます。これはあなたが記述している動作のようです。
私の最初の考えは、カオスが示唆しているように、期待を使用することでした。しかし、私は、ファイルの内容をプロセスにパイプすることを期待してサポートを見つけることはできません。 (私はファイルの内容が毎回異なっていると仮定します。もしそれらが同じであれば、expectのスクリプトにファイルの内容を入れるだけで動作します)
私は注意すべきです決して期待の専門家ではない。私には分かりませんが、これを行う方法があるかもしれません。
あなたのプログラムを起動したPythonスクリプトを書いて、ファイルとEOF文字の内容を入力しました。しかし、Jonathan Lefflerのコメントでは、EOF文字がエコーされないと思っていました。
私の3番目の考えはかなりクルージュです。 expectスクリプトにファイルの内容をプラグインし、expectスクリプトを実行することによって、expectスクリプトを作成するスクリプトを作成できます。私はそれがうまくいくと思う。
ユーザーはどのようにすべてのファイルの終了を示しますか? 2つの制御Dが連続していますか? Unixプログラムの標準的な設計は、 "コマンドラインで指定されたファイルを読み込みます;そのようなファイルがない場合は、標準入力を処理します"。そのデザインを採用すれば、問題はありません。 'myprogram file1.txt file2.txt'を起動するだけです。 –