2010-01-22 15 views
10

मेरे पास एक पायथन मॉड्यूल के अंदर "अलार्म ईमेल" फ़ंक्शन है। मैं इस फ़ंक्शन को बैश स्क्रिप्ट से कॉल करने में सक्षम होना चाहता हूं। मुझे पता है कि आप स्क्रिप्ट में 'पायथन' का उपयोग करके मॉड्यूल को कॉल कर सकते हैं, लेकिन मैं नहीं हूं कि आप मॉड्यूल के भीतर एक विशिष्ट फ़ंक्शन को कैसे कॉल कर सकते हैं या नहीं।बैश स्क्रिप्ट से एक पायथन फ़ंक्शन को कॉल करना

उत्तर

27
python -c'import themodule; themodule.thefunction("boo!")' 
+1

क्या होगा यदि आप पाइथन फ़ंक्शन में स्ट्रिंग में पास करना चाहते हैं? या बस हैलो प्रिंट करने के लिए? 'पायथन-सी 'प्रिंट (" हैलो ")' 'काम नहीं करता है। – mango

+1

@ आमो - गलत - तर्क काम करते हैं। मैंने वास्तव में आपके उदाहरण की प्रतिलिपि बनाई और चिपकाया, और फिर 'python3' और 'python2' दोनों का उपयोग करके फिर से परीक्षण किया। आपको एक अलग समस्या हो सकती है। –

+0

क्या होगा अगर पाइथन मॉड्यूल किसी अन्य निर्देशिका में है? – Chaos

13

आप -c विकल्प का उपयोग कर सकते हैं:

python -c "import random; print random.uniform(0, 1)" 

संशोधित रूप में आप की जरूरत है।

2

एक मॉड्यूल में एक विशेष समारोह कॉल करने के लिए, आश्वासन मॉड्यूल निम्नलिखित है:

if __name__ == "__main__": 
    the_function_to_call() 

तो आप बस अपने खोल स्क्रिप्ट में ऐसा कर सकते हैं।

python module.py 

या

python -m module 

PYTHONPATH पर किया जाए या नहीं मॉड्यूल के आधार पर।

+0

मिलती है यह केवल तभी काम करेगी जब आपके पास पहले से कोई मुख्य नहीं था या आपके पास पहले से कोई मुख्य कार्य था जो आपको आवश्यक फ़ंक्शन की ओर इशारा करता था। मेरे मामले में पहले से ही एक मुख्य है और यह मॉड्यूल में किसी अन्य फ़ंक्शन को इंगित करता है, इसलिए यह एक विकल्प नहीं था। – Daniel

+0

@ डैनियल: यह एक सीमा नहीं है, इस तरह आपकी डिजाइन चीजें हैं। यदि आपके पास पहले से ही 'मुख्य' है और यह गलत बात है, तो आपने इसे गलत बनाया है। –

+1

@ एसएलॉट: यह गलत नहीं बनाया गया है। विधि स्वयं ही करता है जो इसे करने की ज़रूरत है। यह एक सीमा है क्योंकि इसका एक मॉड्यूल एक वर्ग नहीं है जिसका अर्थ है कि यह समान कार्यों का समूह है। आम तौर पर जिसे मुख्य रूप से बुलाया जाता है, पर मुख्य बिंदु, लेकिन इस मामले में मुझे एक गैर-विशिष्ट कार्य के साथ शुरू करने की आवश्यकता होती है। – Daniel

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