यदि आप केवल निष्पादन योग्य चलाने और परिणामों की प्रतीक्षा करना चाहते हैं, तो अनुराग का समाधान शायद सबसे अच्छा है। मुझे आउटपुट की प्रत्येक पंक्ति का जवाब देने की आवश्यकता थी, और निम्नलिखित काम किया:
1) एक ऑब्जेक्ट को एक लिखें (टेक्स्ट) विधि के साथ बनाएं। इसे stdout रीडायरेक्ट करें (sys.stdout = obj)। अपनी लेखन विधि में, आउटपुट के साथ आने के साथ सौदा करें।
2) निम्नलिखित कोड की तरह कुछ के साथ एक अलग धागे में एक विधि चलाएँ:
p = subprocess.Popen('Text/to/execute with-arg', stdout=subprocess.PIPE,
stderr=subprocess.PIPE, shell=False)
while p.poll() is None:
print p.stdout.readline().strip()
क्योंकि आप stdout पुनः निर्देशित किया है, पाइप उत्पादन अपने लिखने विधि लाइन के लिए लाइन द्वारा भेज देंगे। यदि आप निश्चित नहीं हैं कि आपको लाइन ब्रेक मिलेंगे, तो पढ़िए (राशि) भी काम करता है, मुझे विश्वास है। sys.stdout = __sys.stdout__
उस सबप्रोसेस का उपयोग कैसे करें? – Kim
http://docs.python.org/library/subprocess.html#replacing-os-system देखें। –
चीजों को पुनर्निर्देशित करने के लिए os.system का उपयोग करने की कोशिश करते समय पाइप प्रतीक ऑपरेटिंग सिस्टम के बीच अलग है ... – mavnn