Tôi đã viết một chương trình Python đơn giản để mô phỏng hành vi của chương trình bạn mô tả. Ở mức tối thiểu, điều này đặt tất cả chúng ta vào vị trí nói về cùng một thứ thay vì giả định cách chương trình của bạn hoạt động. (Tất nhiên, nếu chương trình của bạn không thực sự hoạt động theo cách tôi mô tả ở đây, hãy sửa tôi.)
#!/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.')
Bạn có thể chạy kịch bản này, gõ nội dung của file đầu tiên, nhấn tổ hợp phím CTRL-D, gõ nội dung của file thứ hai, nhấn Ctrl-D, và thoát khỏi chương trình. Đây dường như là hành vi bạn mô tả.
Suy nghĩ đầu tiên của tôi là sử dụng mong đợi, như sự hỗn loạn được đề xuất. Tuy nhiên, tôi không thể tìm thấy bất kỳ sự hỗ trợ nào trong việc mong đợi đường ống nội dung của một tệp đến một quy trình. (Tôi cho rằng nội dung của các tệp khác nhau mỗi lần. Nếu chúng giống nhau, thì mong đợi sẽ hoạt động, chỉ bằng cách đặt nội dung của tệp vào kịch bản mong đợi.)
Tôi nên lưu ý rằng tôi không có nghĩa là một chuyên gia kỳ vọng; có thể có một cách để làm điều này không rõ ràng với tôi.
Suy nghĩ thứ hai của tôi là viết một tập lệnh Python đã khởi chạy chương trình của bạn và cho nó nội dung của các tệp và các ký tự EOF. Tuy nhiên, nhận xét của Jonathan Leffler khiến tôi nghĩ rằng các nhân vật EOF lặp lại sẽ không hoạt động.
Suy nghĩ thứ ba của tôi khá là kludgy. Bạn có thể viết một kịch bản để tạo ra một kịch bản mong đợi bằng cách cắm nội dung của các tệp vào kịch bản mong đợi và sau đó thực thi kịch bản mong đợi. Tôi nghi ngờ rằng sẽ làm việc.
Người dùng cho biết kết thúc của tất cả các tệp như thế nào? Hai control-D liên tiếp? Thiết kế chuẩn cho các chương trình Unix là "đọc các tập tin có tên trên dòng lệnh; nếu không có các tệp như vậy, hãy xử lý đầu vào tiêu chuẩn". Nếu bạn chấp nhận thiết kế đó, không có vấn đề gì; bạn chỉ cần gọi 'myprogram file1.txt file2.txt'. –