He escrito un programa simple de Python para simular el comportamiento del programa que describes. Como mínimo, esto nos coloca a todos en la posición de hablar sobre lo mismo en lugar de asumir cómo funciona su programa. (Por supuesto, si su programa no funciona de la manera que lo estoy describiendo aquí, por favor corríjanme.)
#!/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.')
Puede ejecutar esta secuencia de comandos, escriba el contenido del primer archivo, pulse Ctrl-D, escriba el contenido del segundo archivo, pulse CTRL-D, y el programa se cierra. Este parece ser el comportamiento que describes.
Mi primer pensamiento fue usar esperar, como sugirió el caos. Sin embargo, no encuentro ningún soporte en esperar para conectar el contenido de un archivo a un proceso. (Supongo que el contenido de los archivos es diferente cada vez. Si son lo mismo, entonces esperaría que funcione, simplemente colocando el contenido de los archivos en el script esperado.)
Debo señalar que estoy de ninguna manera un experto esperado; puede haber una manera de hacer esto que no sea obvia para mí.
Mi segundo pensamiento fue escribir una secuencia de comandos de Python que lanzara su programa y le diera el contenido de los archivos y los caracteres EOF. Sin embargo, los comentarios de Jonathan Leffler me hicieron pensar que repetir los caracteres EOF no funcionaría.
Mi tercer pensamiento es bastante maldito kludgy. Podría escribir un script que cree un script esperado al conectar el contenido de los archivos en el script esperado y luego ejecutar el script esperado. Sospecho que eso funcionaría.
¿Cómo indica el usuario el final de todos los archivos? Dos control-D en una fila? El diseño estándar para los programas de Unix es "leer archivos nombrados en la línea de comandos, si no hay tales archivos, procesar la entrada estándar". Si adoptas ese diseño, no hay problemas; solo invocas 'myprogram file1.txt file2.txt'. –