2011-09-29 12 views
5

मैं एक प्रोग्राम (.exe) कॉल करना चाहता हूं, जो कि सी ++ में लिखा गया है और पाइथन से संकलित है। निष्पादन योग्य इनपुट दो फाइलों के रूप में लेता है और एक स्कोर देता है।पायथन से बाहरी प्रोग्राम को कॉल करें और इसका आउटपुट

मुझे एकाधिक फ़ाइलों के लिए ऐसा करने की आवश्यकता है। इसलिए, मैं अजगर में एक छोटी सी लिपि लिखना चाहूंगा जो एकाधिक फाइलों पर लूप करता है, उन्हें निष्पादन योग्य में भेजता है और मूल्यों को वापस ले जाता है।

अब, मैंने अपनी खोज की है और मुझे SWIG और बूस्ट के बारे में पता है :: पायथन एक विकल्प हो सकता है लेकिन मैं यह खोजने का प्रयास कर रहा था कि कोई आसान तरीका है या नहीं। मुझे सी ++ प्रोग्राम 'विस्तार' करने की आवश्यकता नहीं है। मैं बस इसे कॉल करना चाहता हूं जैसे कि मैं कमांड लाइन से और लौटा नंबर प्राप्त करूंगा।

+1

इस प्रश्न का प्रयास करें: http://stackoverflow.com/questions/2919783/python-calling-a-non-python-program-from-python – TorelTwiddler

+0

@TorelTwiddler जो वह नहीं करना चाहता है - वह जवाब सिर्फ रिटर्न देता है वापसी कोड, कार्यक्रम के आउटपुट नहीं। – agf

+0

सही डुप्लिकेट है [Python के subprocess.check_call के बराबर क्या है जो stdout की सामग्री देता है?] (Http://stackoverflow.com/questions/2924310/whats-a-good-equivalent-to-pythons-subprocess- चेक-कॉल-कि-रिटर्न-Conte) – agf

उत्तर

5

एक बाहरी कार्यक्रम चलाने के लिए और इसके उत्पादन मिलता है, अजगर 2.7+ पर subprocess.check_output का उपयोग करें। डॉक्स से उदाहरण:

>>> subprocess.check_output(["ls", "-l", "/dev/null"]) 
'crw-rw-rw- 1 root root 1, 3 Oct 18 2007 /dev/null\n' 

check_call सिर्फ प्रोग्राम है, न उत्पादन की वापसी कोड देता है।

2

आप इसके लिए the subprocess module का उपयोग कर सकते हैं।

result = subprocess.check_output(['your_program.exe', 'arg1', 'arg2']) 
संबंधित मुद्दे