我需要在我的OCaml程序中评估(数百万个)Python表达式,例如
然而,我的代码并没有按照预期工作(尽管相同的代码在某些交互式程序中可以工作)。
(int(a) >> 8 == 4) and b
。虽然有pycaml
,但我无法让它正常工作。因此,我转向另一个想法:直接控制Python解释器的输入/输出。理想情况下,我希望能拦截解释器本身的输入/输出。通过将a = 3
b = 5
a > b
发送到解释器,我将能够获得结果False
,就像我通过键盘输入一样。>>> a = 3
>>> b = 5
>>> a > b
False
>>>
然而,我的代码并没有按照预期工作(尽管相同的代码在某些交互式程序中可以工作)。
let (readme, writeme) = Unix.open_process "python -u";;
let _ = output_string writeme "3 + 5\n" in
let _ = flush writeme in
let result = input_line readme in
print_endline result;;
我尝试将3 + 5\n
更改为print 3\n
,但它仍然停留在input_line
。
有没有更好的方法? 我需要评估相当多的表达式,所以我不想通过临时文件来完成。 任何帮助都将不胜感激,
谢谢。