2016-08-13 134 views
0

我从ruby运行python脚本。但我已经传递参数给Python脚本,我从红宝石凸轮。应该传递的参数是我在该特定实例中的一些变量。这是我的代码,说明这种情况。从变量中运行python代码

#test.rb 
    result = `python ml.py '{"a":1, "b":23, "c":2334,"d":2244}'` 

上面的代码完美地工作。但参数是从我需要传递给python脚本的一些操作中生成的。发送params是我的问题。这是我实施的代码。

 #testvar.rb   
    params = manipulate_data    # This gives result in json format 
    #result `python ml.py 'params'`  # Not working 

我尝试了其他方法,但也不适合我。

回答

0

试试这个:

$ cat d.py 
import json 
import sys 
from collections import OrderedDict 
print json.loads(sys.argv[1], object_pairs_hook=OrderedDict) 
$ cat a.rb 
require 'json' 
params = {"a":1, "b":23, "c":2334,"d":2244}.to_json 
result = `python d.py '#{params}'` 
puts result 
$ ruby a.rb 
OrderedDict([(u'a', 1), (u'b', 23), (u'c', 2334), (u'd', 2244)])