0

我想从 ruby​​ 运行 python 代码。我正在使用这个宝石。 红宝石代码:

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

我收到错误:rubypython 警告:未定义“object_id”可能会导致严重问题

红宝石代码:

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)) 

似乎宝石不起作用。可能是什么问题?

提前致谢

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 回答