2009-05-07 19 views
5

रूबी का उपयोग पाइथन पुल में करने में आसान है? या मैं सिस्टम() का उपयोग कर बेहतर हूँ?मैं रूबी से पायथन कोड कैसे शुरू करूं?

+0

मैंने पूछा; शायद उत्तर कुछ मदद की होगी: http://stackoverflow.com/questions/2413878/would-it-be-possible-to-integrate-python-or-perl-with-ruby। – Yktula

उत्तर

2

मुझे नहीं लगता कि सिस्टम() या कुछ के माध्यम से, प्रक्रिया को फोर्क किए बिना रूबी से पाइथन को आमंत्रित करने का कोई तरीका है। भाषा चलाने के समय पूरी तरह से अलग हैं, उन्हें वैसे भी अलग प्रक्रियाओं में होना चाहिए।

+0

उपप्रोसेसर मॉड्यूल के माध्यम से प्रक्रियाओं का आह्वान करता है। प्रणाली() में बहुत कमी नहीं है, चलो जानवर को मार दें। – nosklo

6

रूबी में पाइथन एम्बेड करने के लिए आप Masaki Fukushima's library को आजमा सकते हैं, हालांकि यह बनाए रखा प्रतीत नहीं होता है। YMMV

इस पुस्तकालय के साथ, रूबी स्क्रिप्ट सीधे मनमाना अजगर मॉड्यूल कॉल कर सकते हैं। पायथन में लिखे गए दोनों एक्सटेंशन मॉड्यूल और मॉड्यूल का उपयोग किया जा सकता है।

amusingly सरल क्यों लकी कड़ी भी काम का हो सकता से Unholy नामित:

संकलित रूबी अजगर बाईटकोड करने के लिए।
और, इसके अलावा, कि
बाईटकोड वापस अजगर स्रोत कोड Decompyle का उपयोग करने का अनुवाद (शामिल थे।)

रूबी 1.9 और अजगर 2.5 की आवश्यकता है।

+0

अच्छा। पहले अपवित्र के बारे में नहीं सुना था। –

-1

दुभाषिया चलाने के लिए पाइथन कोड के लिए एक प्रक्रिया के रूप में लॉन्च करने की आवश्यकता है। तो सिस्टम() आपका सबसे अच्छा विकल्प है।

पायथन कोड को कॉल करने के लिए आप आरपीसी या नेटवर्क सॉकेट का उपयोग कर सकते हैं, जो सबसे सरल चीज के लिए संभवतः काम कर सकता है।

+0

बढ़िया, यही वह है जो मैं करने का इरादा रखता हूं। अकेले सिस्टम() का उपयोग करने से फैनसीयर होने का कोई कारण न देखें। – Eric

+2

मुझे नहीं लगता कि यह बिल्कुल सही है: पाइथन दुभाषिया को किसी अन्य एप्लिकेशन में एम्बेड करने के दस्तावेज़ों के लिए http://docs.python.org/extending/embedding.html देखें। जो, विपरीत के लिए, रूबी दुभाषिया हो सकता है। –

0

आप अपने अजगर स्क्रिप्ट की तरह अजगर कोड उपयोग करना चाहते हैं एक समारोह है, IO.popen प्रयास करें।

यदि आप पाइथन लिपि "reverse.py" का उपयोग करके सरणी में प्रत्येक स्ट्रिंग को रिवर्स करना चाहते हैं, तो आपका रूबी कोड निम्नानुसार होगा।

strings = ["hello", "my", "name", "is", "jimmy"] 
#IO.popen: 1st arg is exactly what you would type into the command line to execute your python script. 
#(You can do this for non-python scripts as well.) 
pythonPortal = IO.popen("python reverse.py", "w+") 
pythonPortal.puts strings #anything you puts will be available to your python script from stdin 
pythonPortal.close_write 

reversed = [] 
temp = pythonPortal.gets #everything your python script writes to stdout (usually using 'print') will be available using gets 
while temp!= nil 
    reversed<<temp 
    temp = pythonPortal.gets 
end 

puts reversed 

फिर अपने अजगर स्क्रिप्ट इस

import sys 

def reverse(str): 
    return str[::-1] 

temp = sys.stdin.readlines() #Everything your ruby programs "puts" is available to python through stdin 
for item in temp: 
    print reverse(item[:-1]) #Everything your python script "prints" to stdout is available to the ruby script through .gets 
    #[:-1] to not include the newline at the end, puts "hello" passes "hello\n" to the python script 

आउटपुट कुछ ऐसा दिखाई देगा: olleh ym एमन सी ymmij एक समान प्रश्न यहाँ पहले

+2

लेखक रूबी से पाइथन कोड का आह्वान करना चाहता है, अजगर से रूबी कोड नहीं। –

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