2016-02-17 3 views
7

से पाइथन फ़ंक्शन को कॉल करें मेरे पास सी # में लिखे गए मेरे मुख्य रूप के साथ विजुअल स्टूडियो 2015 है और वहां से मेरे पास पाइथन (सामान्य पायथन आयरन पायथन) में लिखे गए विभिन्न वर्ग हैं। मैं अपने सी # कोड से पायथन कार्यों को कैसे कॉल करूं?सी # (.NET)

मुझे पता है कि इसके बारे में कई विषय हैं लेकिन उनमें से अधिकतर पुराने हैं और कुछ समाधान बहुत कठिन हैं या सी ++ जैसी मध्य भाषा का उपयोग करने में शामिल हैं।

वहाँ एक आसान है:

ये कुछ लिंक मैं उपयोगी पाया लेकिन इस सवाल का जवाब मैं बिल्कुल लिए खोज रहा था के साथ प्रदान की नहीं किया हैं रास्ता या क्या मुझे अभी भी एक कामकाज की ज़रूरत है? और अगर मुझे कामकाज की ज़रूरत है तो सबसे आसान क्या है?

+0

आप pythonnet को देखा है? – denfromufa

उत्तर

3

आप अपने आदेश पंक्ति

System.Diagnostics.Process process = new System.Diagnostics.Process(); 
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); 
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
startInfo.FileName = "cmd.exe"; 
startInfo.Arguments = "python whatever"; 
process.StartInfo = startInfo; 
process.Start(); 

या और भी बेहतर के माध्यम से सब कुछ कॉल कर सकते हैं, बस Python.exe फोन और उसके तर्क के रूप में अपने py फ़ाइलों पारित:

System.Diagnostics.Process process = new System.Diagnostics.Process(); 
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); 
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
startInfo.FileName = "Python.exe"; 
startInfo.Arguments = "yourfile.py"; 
process.StartInfo = startInfo; 
process.Start(); 
+0

मुझे लगता है कि ओपी स्क्रिप्ट –

+2

@AlexanderMiles को निष्पादित करने के बजाए एक विशिष्ट फ़ंक्शन को कॉल करने के लिए एक समाधान की तलाश कर रहा है, प्रक्रिया अभी भी वही होगी। आप 'पायथन-सी' आयात फू को कॉल कर सकते हैं; प्रिंट करें foo.hello() ''' system.Diagnostics.Process' – Yar

+2

के माध्यम से कमांड एक अच्छी तरह से लिखित 2015 लेख है जो https://code.msdn.microsoft.com/windowsdesktop/C-and- पर @ यार के दूसरे दृष्टिकोण का उपयोग करता है। पायथन-इंटरप्रोसेस-171378ee। इसमें आपके पायथन स्क्रिप्ट तर्क भेजने और आपके सी # ऐप में इसके आउटपुट को कैप्चर करना भी शामिल है। – snark

-2

ऐसा करने का अनुशंसित तरीका IronPython का उपयोग करना है। एक और जवाब है जो सी #: How do I call a specific Method from a Python Script in C#?

यदि पाइरपीथन एक विकल्प नहीं है, जैसा कि आपने बताया है, तो आप वैकल्पिक रूप से कमांड लाइन से फ़ंक्शन चला सकते हैं और पास में जा सकते हैं आवश्यकतानुसार तर्क, हालांकि किसी भी जटिल के लिए यह स्पेगेटी में बदल सकता है।

python -c 'import foo; print foo.hello()' 

तो सी # में ऊपर चलाने के लिए:

System.Diagnostics.Process process = new System.Diagnostics.Process(); 
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); 
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
startInfo.FileName = "python.exe"; 
startInfo.Arguments = "-c import foo; print foo.hello()"; 
process.StartInfo = startInfo; 
process.Start(); 

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

+2

lol धन्यवाद मेरे उत्तर की प्रतिलिपि बनाने के लिए। – Yar

+0

जब आप उत्तर देते थे, तो मैं इसे पहले ही जोड़ रहा था, हालांकि मैं स्वीकार करता हूं कि मैंने विंडोस्टाइल –

+0

को सेट करने पर आपके द्वारा एक नोट लिया है डाउनवॉट्स क्यों? –