控制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
。
有什么更好的方法吗?我需要评估很多
表达式,所以我真的不想通过临时文件来执行此操作。任何帮助表示赞赏,
谢谢。
没有找到相关结果
已邀请:
2 个回复
细屠截殴些
舜辉
这足以满足您的需求吗? 如果您担心重复打开解释器,则可以一次生成并评估许多表达式。我不确定上限是多少,但是我可以毫无问题地评估并打印200张ѭ12的串联副本。