控制Python交互式Shell的输入/输出

| 我必须评估(数百万个)Python表达式,例如
(int(a) >> 8 == 4) and b
在我的OCaml程序中。有
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
。 有什么更好的方法吗?我需要评估很多 表达式,所以我真的不想通过临时文件来执行此操作。任何帮助表示赞赏, 谢谢。     
已邀请:
        我不会评论整个概念的怪异性(驱动python从o \'caml评估表达式),但似乎您可能想研究编写一个读/写的eval周期的python程序从/到管道的字符串。查找eval命令。     
        您可以通过命令行向解释器提供命令:
$ python -c \'a = 3; b = 5; print a > b\'
False
这足以满足您的需求吗? 如果您担心重复打开解释器,则可以一次生成并评估许多表达式。我不确定上限是多少,但是我可以毫无问题地评估并打印200张ѭ12的串联副本。     

要回复问题请先登录注册