के साथ निकलता है मैं Windows Server 2008 R2 x64 बॉक्स पर Python 2.7.1
का उपयोग कर रहा हूं।पायथन: एक कमांड लाइन से आउटपुट प्राप्त करें जो nonzero निकास कोड
मैं एक कमांड लाइन प्रक्रिया का आउटपुट प्राप्त करने की कोशिश कर रहा हूं जो मुझे आवश्यक जानकारी को आउटपुट करने के बाद एक गैर-बाहर निकलने की स्थिति देता है।
मैं शुरू में subprocess.check_output
उपयोग कर रहा था, और CalledProcessError जो अशून्य बाहर निकलने की स्थिति के साथ होता है को पकड़ने, लेकिन जब returncode त्रुटि में जमा हो गया था, कोई उत्पादन इस का पता चला।
आउटपुट देने वाले मामलों के खिलाफ इसे चलाने के लिए, लेकिन 0 से बाहर निकलने की स्थिति ठीक से काम करती है और मैं subprocess.check_output का उपयोग करके आउटपुट प्राप्त कर सकता हूं।
मेरी धारणा यह थी कि उत्पादन STDOUT को लिखा जा रहा था लेकिन अपवाद एसटीडीईआरआर से 'आउटपुट' खींचता है। मैंने check_output की कार्यक्षमता को फिर से कार्यान्वित करने का प्रयास किया है, लेकिन मुझे अभी भी आउटपुट पर कुछ भी नहीं मिलता है जब मुझे विश्वास है कि मुझे आउटपुट को STDOUT और STDERR में देखना चाहिए। (जहां 'कमांड', पैरामीटर सहित पूरा पाठ है, आदेश की मैं चला रहा हूँ मेरे वर्तमान कोड के नीचे है:
process = subprocess.Popen(command, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT, universal_newlines=True)
output = process.communicate()
retcode = process.poll()
if retcode:
raise subprocess.CalledProcessError(retcode, image_check, output=output)
return output
यह मैं देता चर उत्पादन में निम्नलिखित:
मेरी subprocess.Popen
कोड है सही हूँ?
'.communicate() 'के बाद, आप' process.poll() 'के बजाय सीधे' process.returncode' का उपयोग कर सकते हैं। – jfs
पायथन के साथ कमांडलाइन से आउटपुट कैसे प्राप्त करें: http://stackoverflow.com/a/20456745/445131 –