2012-01-27 19 views
11

का उपयोग कर रिटर्न वैल्यू प्राप्त करें मैं एक स्क्रिप्ट के रिटर्न वैल्यू द्वारा एक वैरिएबल को परिभाषित करने में सक्षम होना चाहता हूं।सबप्रोसेस

sum_total_earnings_usd = subprocess.call([SCRIPT, "-d", date]) 

मैं स्क्रिप्ट के रिटर्न मान जाँच कर ली है, फिर भी, जब मैं कोशिश करते हैं और इस चर सेट, यह हमेशा रिटर्न 0 (http://docs.python.org/library/subprocess.html#subprocess.call): यह मैं वर्तमान में क्या है। मैं इस स्क्रिप्ट को कैसे चलाऊंगा और परिवर्तनीय के रूप में स्टोर करने के लिए रिटर्न वैल्यू कैप्चर करूं?

उत्तर

19

उपयोग subprocess.check_output()subprocess.call()

+0

धन्यवाद। 'subprocess.check_output() 'वह है जो कमांड चलाता है और रिटर्न वैल्यू देता है। – David542

+0

यदि आप चाहते हैं कि आउटपुट STDOUT पर अपना मान लिखें और मान प्राप्त करने के लिए 'check_output()' का उपयोग करें। अन्यथा, jcollado सही है कि प्रक्रिया निकास स्थिति पहले से ही वापस आ गया है। –

3

subprocess.call के बजाय पहले से ही प्रक्रिया वापसी मान देता है। यदि आप हमेशा 0 प्राप्त कर रहे हैं, तो आपको यह सुनिश्चित करने के लिए SCRIPT की समीक्षा करने की आवश्यकता होगी कि यह आपके द्वारा अपेक्षित मूल्य लौटा रहा है।

चेक को दोबारा करने के लिए, आप शेल में SCRIPT निष्पादित भी कर सकते हैं और रिटर्न कोड प्राप्त करने के लिए $? का उपयोग कर सकते हैं।

6

अपने स्क्रिप्ट मूल्य लौटा रहा है, तो आप subprocess.check_output() का उपयोग करना चाहते हैं:

subprocess.check_output([SCRIPT, "-d", date], shell=True). 

subprocess.check_call() स्क्रिप्ट से अंतिम वापसी मान हो जाता है, और 0 आम तौर पर "स्क्रिप्ट को सफलतापूर्वक पूरा कर" का अर्थ है।

संबंधित मुद्दे