0

ruby から python コードを実行したい。私はこの宝石を使用しています。 ルビーコード:

require "rubypython"    
RubyPython.start    
fileinput=RubyPython.import("fileinput")
RubyPython.stop

次のエラーが表示されます: ruby​​python warning: undefining `object_id' may cause a significant problem

ルビーコード:

require "rubypython"

RubyPython.start 

fileinput=RubyPython.import("fileinput")

name=''
name2=""
r=0
i=0
open_file=fileinput.input("lala")
output=open("lalal","w")
for line in open_file:
    keys=line.split()
    length=(len(keys))
    if length==3:       

        if (keys[0]!=name and i!=0):
            output.write("%s\t%s\t%s\n"%(name,name2,r))             
            name=keys[0]
            name2=keys[1]
            r=float(keys[2])        


output.write("%s\t%s\t%s\n"%(name,name2,r))
output.close()

RubyPython.stop

エラーが発生します:

unique.rb:12: syntax error, unexpected ':', expecting keyword_do_cond or ';' or '\n'
unique.rb:15: syntax error, unexpected ':', expecting keyword_then or ';' or '\n'
    if length==3:       
                 ^
unique.rb:17: syntax error, unexpected ':', expecting keyword_then or ';' or '\n'
unique.rb:18: syntax error, unexpected ')', expecting '='
            output.write("%s\t%s\t%s\n"%(name,name2,r)) 

gem が機能していないようです。何が問題になる可能性がありますか?

前もって感謝します

4

1 に答える 1

0

RubyPython を使用すると、Ruby 内から Python オブジェクトを使用できますが、コードは有効な Ruby コードである必要があります (バックグラウンドで Python オブジェクトと連携するラッパー オブジェクトを公開するだけです)。このツールを使用して、コードを同等の Ruby に変換することもできますが、その時点で、Ruby で書き直したほうが、よりクリーンで読みやすく、効率的になります。

私の知る限り、Python コードを Ruby スクリプトに挿入して実行する方法はありません。このようなプロジェクトはかなり突飛であり、効率的に近づくことはまずありません。

Python コードを Ruby コードとして書き直すか、Python コードをスタンドアロン スクリプトにして、Python インタープリターを呼び出してRuby から実行できるようにします。すべての通信は stdin/stdout を使用して行う必要があるため、これは当然、コードがアプリケーションの残りの部分と大量の対話を必要としない場合にのみ使用できるオプションです。

于 2013-05-18T12:27:16.857 に答える