मेरे पास एक ऐसा प्रोग्राम है जो stdout और संभवतः stderr को लिखता है। मैं इसे पायथन से चलाने के लिए, stdout और stderr कब्जा करना चाहता हूँ।मैं कैसे पता लगा सकता हूं कि subprocess.Popen प्रतीक्षा करें() stdout = PIPE अगर हमेशा के लिए इंतजार कर रहा है?
from subprocess import *
p = Popen(exe, shell=TRUE, stdout=PIPE, stderr=PIPE)
rtrncode = p.wait()
कार्यक्रमों की एक जोड़ी के लिए, यह ठीक काम करता है, लेकिन जब मैं एक नया एक जोड़ा, नया एक हमेशा के लिए लटका हुआ है: मेरा कोड की तरह दिखता है। अगर मैं stdout=PIPE
हटा देता हूं, तो प्रोग्राम कंसोल और फिनिश पर अपना आउटपुट लिखता है और सब कुछ ठीक है। मैं कैसे तय कर सकता हूं कि लटकने का क्या कारण है?
विंडोज एक्सपी पर पायथन 2.5 का उपयोग करना। कार्यक्रम stdin से नहीं पढ़ता है और न ही इसमें किसी भी प्रकार का उपयोगकर्ता इनपुट है (यानी "एक कुंजी दबाएं")।
आपने मुझे थोड़ा सा हराया। +1 – MitMaro
पायथन 2.5 के साथ स्थापित सहायता फ़ाइल में जानकारी की उस छोटी सी जानकारी नहीं है। धन्यवाद –
@ ग्रेमे, आह हाँ, 2.6 के दस्तावेज़ों में काफी सुधार हुआ है wrt 2.5's। –