我想从ruby运行一个python代码。 我是using this gem. Ruby代码:
require "rubypython"
RubyPython.start
fileinput=RubyPython.import("fileinput")
RubyPython.stop
我收到错误: rubypython警告:取消定义`object_id'可能会导致严重问题
Ruby代码:
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))
似乎宝石不起作用。可能是什么问题?
提前致谢
答案 0 :(得分:0)
RubyPython允许您在Ruby中使用Python对象,但您的代码必须是有效的Ruby代码(它只是暴露了在后台使用Python对象的包装器对象)。您可以使用此工具将您的代码转换为Ruby等效,但此时,您可能只需在Ruby中重写它,它将更干净,更易读,更高效。
据我所知,没有办法将Python代码插入Ruby脚本并让它运行。这样一个项目非常出色,不太可能有任何效率。
将Python代码重写为Ruby代码,或者将Python代码作为独立脚本,然后您可以call the Python interpreter从Ruby运行它。如果您的代码不需要与应用程序的其余部分进行大量交互,那么这自然只是一个选项,因为所有通信都必须使用stdin / stdout进行。