मैंने आपके द्वारा वर्णित कार्यक्रम के व्यवहार को अनुकरण करने के लिए एक सरल पायथन कार्यक्रम लिखा है। कम से कम, यह आपको यह मानने के बजाय कि आपका प्रोग्राम कैसे काम करता है, वही चीज़ के बारे में बात करने की स्थिति में है। (बेशक, यदि आपका प्रोग्राम वास्तव में जिस तरीके से वर्णन कर रहा हूं, वह वास्तव में काम नहीं करता है, तो कृपया मुझे सही करें।)
#!/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 मारा, और कार्यक्रम से बाहर निकलता है। यह वह व्यवहार प्रतीत होता है जो आप वर्णन कर रहे हैं।
मेरा पहला विचार उम्मीदों का उपयोग करना था, अराजकता के अनुसार। हालांकि, मुझे किसी फ़ाइल की सामग्री को किसी प्रक्रिया में पाइप करने की अपेक्षा में कोई समर्थन नहीं मिल रहा है। (मुझे लगता है कि फाइलों की सामग्री हर बार अलग होती है। अगर वे वही हैं, तो अपेक्षा की जाती है कि उम्मीदों की अपेक्षा स्क्रिप्ट में फाइलों की सामग्री डालें।)
मुझे ध्यान रखना चाहिए कि मैं हूं किसी भी तरह से एक विशेषज्ञ विशेषज्ञ नहीं; ऐसा करने का एक तरीका हो सकता है जो मेरे लिए स्पष्ट नहीं है।
मेरा दूसरा विचार एक पायथन लिपि लिखना था जिसने आपका प्रोग्राम लॉन्च किया, और इसे फाइलों और ईओएफ पात्रों की सामग्री खिलाया। हालांकि, जोनाथन लेफ्लर की टिप्पणियों ने मुझे सोचा कि ईओएफ पात्रों को प्रतिबिंबित करना काम नहीं करेगा।
मेरा तीसरा विचार बहुत डरावना है। आप एक स्क्रिप्ट लिख सकते हैं जो फ़ाइलों की सामग्री को अपेक्षित स्क्रिप्ट में प्लग करके और उम्मीद स्क्रिप्ट को निष्पादित करके एक अपेक्षित स्क्रिप्ट बनाता है। मुझे संदेह है कि काम करेगा।
उपयोगकर्ता सभी फ़ाइलों का अंत कैसे इंगित करता है? दो नियंत्रण-डी एक पंक्ति में है? यूनिक्स प्रोग्राम के लिए मानक डिज़ाइन "कमांड लाइन पर नामित फ़ाइलें पढ़ें; यदि ऐसी कोई फाइल नहीं है, तो मानक इनपुट प्रक्रिया करें"। यदि आप उस डिजाइन को अपनाते हैं, तो कोई समस्या नहीं है; आप बस 'myprogram file1.txt file2.txt' का आह्वान करते हैं। –