मैं इस कोड है:अजगर उपप्रक्रिया छिपाने stdout और यह इंतजार पूरा करने के लिए
def method_a(self):
command_line = 'somtoolbox GrowingSOM ' + som_prop_path
subprocess.Popen(shlex.split(command_line))
......
def method_b(self): .....
....
और चाहते है कि तुम सब देखते हैं, method_a एक उपप्रक्रिया कि somtoolbox कार्यक्रम बुला रहा है है। लेकिन इस कार्यक्रम में एक लंबा स्टडआउट है, और मैं इसे छिपाना चाहता हूं। मैंने कोशिश की:
subprocess.Popen(shlex.split(command_line), stdout=subprocess.PIPE)
लेकिन यह इस वाक्य लौटे:
cat: record error: Broked Pipe
(इस पुर्तगाली वाक्य का अनुवाद है: "बिल्ली: erro de gravação: पाइप Quebrado") (मैं से हूँ ब्राजील)
इसके अलावा, मेरे पास अन्य विधियां हैं (जैसे method_b वहाँ), जिन्हें method_a के बाद बुलाया जाता है, और प्रक्रिया के पूर्ण होने से पहले टीआईएस विधियां चल रही हैं।
मैं स्टडआउट को कैसे छुपा सकता हूं (और इसे कहीं भी नहीं चाहता), और अन्य कोड निष्पादन को समाप्त करने के लिए उपप्रोसेस के लिए प्रतीक्षा करें?
ओब्स: सोमटोल्क्स एक जावा प्रोग्राम है, जो टर्मिनल को लंबा आउटपुट देता है। की कोशिश की:
outputTuple = subprocess.Popen(shlex.split(command_line), stdout = subprocess.PIPE).communicate()
लेकिन निरंतर खोल करने के लिए उत्पादन लौटने। सहायता!
यह छिपा नहीं रहा है –
@ गैब्रियल शायद आपको stderr को रीडायरेक्ट करने की आवश्यकता है? –
काम किया! आपको बहुत - बहुत धन्यवाद! –