दिलचस्प पोस्ट
जब मैं एच का प्रयोग करना चाहिए: h: commandLink के बजाय outputLink? वर्ण स्तंभ नाम से डेटा फ्रेम फ़िल्टर करें (dplyr में) पीडीओ बंद कनेक्शन स्थानीय होस्ट पर PHP मेल () फ़ंक्शन ग्रन्ट घड़ी त्रुटि – प्रतीक्षारत … घातक त्रुटि: देखें ENOSPC संस्करण बनाम XCode में बनाओ जावा में वर्तमान दिनांक / समय कैसे प्राप्त करें जावा का अर्रे अनुक्रमणिका कहाँ है? एंड्रॉइड पर ओर्मलाईट के साथ प्रोगार्ड मैं मक्खी पर जेफैम के अंदर जेपीएनएल कैसे बदलूं? सी # ऑब्जेक्ट डम्पर गोटो का उपयोग करने में क्या गलत है? आईओएस 6 में उपकरण अभिविन्यास को प्रोग्रामेटिक रूप से कैसे बदला जाए मेमोरी में सुरक्षित रूप से मिटाना पासवर्ड (पायथन) "सॉफ़्टवेयर के कारण के लिए आधिकारिक कारण बंधना: सॉकेट लिखने की त्रुटि"

अजगर के सबप्रोसेक के लिए एक अच्छा समकक्ष क्या है। चेकमार्क stdout की सामग्री देता है?

मुझे एक अच्छा तरीका चाहिए जो कि CalledProcessError के इंटरफेस से मेल खाता है। CalledProcessError – यानी, CalledProcessError किया गया CalledProcessError तब फेंकता है जब यह विफल हो जाता है, तुल्यकालिक है, और सी – लेकिन कमांड के रिटर्न कोड को लौटने के बजाय (अगर यह भी करता है) रिटर्न प्रोग्राम का आउटपुट, या तो केवल स्टडआउट, या (स्टडआउट, स्टेडरर) का ट्यूपल।

क्या कोई ऐसा तरीका है जो यह करता है?

वेब के समाधान से एकत्रित समाधान "अजगर के सबप्रोसेक के लिए एक अच्छा समकक्ष क्या है। चेकमार्क stdout की सामग्री देता है?"

पायथन 2.7+

 from subprocess import check_output as qx 

पायथन <2.7

उपप्रोसेस से :

 import subprocess def check_output(*popenargs, **kwargs): if 'stdout' in kwargs: raise ValueError('stdout argument not allowed, it will be overridden.') process = subprocess.Popen(stdout=subprocess.PIPE, *popenargs, **kwargs) output, unused_err = process.communicate() retcode = process.poll() if retcode: cmd = kwargs.get("args") if cmd is None: cmd = popenargs[0] raise subprocess.CalledProcessError(retcode, cmd, output=output) return output class CalledProcessError(Exception): def __init__(self, returncode, cmd, output=None): self.returncode = returncode self.cmd = cmd self.output = output def __str__(self): return "Command '%s' returned non-zero exit status %d" % ( self.cmd, self.returncode) # overwrite CalledProcessError due to `output` keyword might be not available subprocess.CalledProcessError = CalledProcessError 

संभव check_output() कार्यान्वयन के अन्य उदाहरण के लिए एक स्ट्रिंग के रूप में सिस्टम कमान आउटपुट कैप्चरिंग भी देखें

मैं एक टिप्पणी में स्वरूपण नहीं कर सकता, इसलिए यह जेएफ सेबस्टियन के जवाब के जवाब में है

मैंने यह बहुत उपयोगी पाया इसलिए मुझे लगा कि मैं इस उत्तर में जोड़ूंगा। मैं संस्करण की जांच किए बिना कोड में मूल रूप से काम करने में सक्षम होना चाहता था। यह जो मैंने किया है…

मैंने उपरोक्त कोड को 'सबप्रोसेक_कोम्पाटपा' नामक एक फ़ाइल में डाल दिया तब कोड में जहां मैंने उपप्रोसेस का उपयोग किया था I

 import sys if sys.version_info < (2, 7): import subprocess_compat subprocess.check_output = subprocess_compat.check_output 

अब कोड में कहीं भी मैं 'सबप्रोसेस। चेक' आउटपुट '' कॉल करना चाहूंगा, और मैं यह चाहता हूं कि अजगर का मैं किस संस्करण का उपयोग कर रहा हूं।

यह फ़ंक्शन स्ट्रिंग की सूची के रूप में टर्मिनल आउटपुट देता है।

 import subprocess,sys def output(cmd): cmd_l = cmd.split() output = subprocess.Popen(cmd_l, stdout=subprocess.PIPE).communicate()[0] output = output.decode("utf-8") return (output)