आप दो मुद्दों को भ्रमित कर रहे हैं।
सबसे पहले, आपका आवेदन stdin से इनपुट प्राप्त कर सकता है। इसका xargs
से कोई लेना देना नहीं है। अपने उदाहरण में, सभी hardware.py
करने की जरूरत इनपुट फ़ाइल के रूप में sys.stdin
पढ़ा जाता है, जैसे:
if __name__=='__main__':
for line in sys.stdin:
do_something(line)
आप उत्पादन है कि रेखा के नीचे अन्य कार्यक्रमों का उपयोग कर सकते उत्पादन करने के लिए hardware.py चाहते हैं, बस sys.stdout
को लिखने
दूसरा, आपका आवेदन तर्क से इनपुट प्राप्त कर सकता है। यह वह जगह है जहां आप xargs
का उपयोग करेंगे। उदाहरण के लिए:
xargs ./hardware.py < server.txt # cat server.txt के समान # | xargs ./hardware.py
यह (एक ही बार में संभवतः कई तर्क) hardware.py लिए एक तर्क के रूप में हर servers.txt की "शब्द" (नहीं हर लाइन) से होकर गुजरेगा। यह hardware.py word1 word2 word3 word4 ...
पाइथन स्टोर्स कमांड लाइन तर्क sys.arvg
सरणी के समान होगा। sys.argv[0]
कमांड नाम होगा, और sys.argv[1:]
सभी कमांड लाइन तर्क होंगे। हालांकि, आप आमतौर पर argparse
का उपयोग करके अपनी कमांड लाइन को संसाधित करने से बेहतर होते हैं।
स्रोत
2012-08-07 20:09:18
जो आप दिखाते हैं वह * मानक इनपुट * है, लेकिन आप जो पूछते हैं * 'xargs' है। ये एक ही चीज नहीं हैं। आप कौन सा चाहते थे – kojiro
क्या कोई विशेष कारण है कि आप केवल Python में टेक्स्ट फ़ाइल में नहीं पढ़ सकते हैं? – ciferkey
पाइप बस 'cat' 'stdout' को hardware.py' stdin' से जोड़ता है। तो, हार्डवेयर.py में, आपको केवल 'stdin' (जैसे डेटा = raw_input()) से डेटा पढ़ना चाहिए। –