如何从swi prolog中执行的python脚本中获取输出值
如何制作一个执行Python文件如何从swi prolog中执行的python脚本中获取输出值,python,prolog,swi-prolog,Python,Prolog,Swi Prolog,如何制作一个执行Python文件score.py并获取输出的swi prolog程序 我已经读过关于process\u create/3和exec/1的内容,但是我找不到太多的文档您需要使用process\u create/3的stdout/1和stderr/1选项 例如,下面是一个简单的谓词,它简单地将流程输出复制到standardoutput: _进程的输出(Exec,Args):- 进程创建(Exec,Args,[stdout(管道(流)), 标准(管道(流))], 复制\u流\u数据(流
score.py
并获取输出的swi prolog
程序
我已经读过关于
process\u create/3
和exec/1
的内容,但是我找不到太多的文档您需要使用process\u create/3
的stdout/1
和stderr/1
选项
例如,下面是一个简单的谓词,它简单地将流程输出复制到standardoutput:
_进程的输出(Exec,Args):-
进程创建(Exec,Args,[stdout(管道(流)),
标准(管道(流))],
复制\u流\u数据(流、当前\u输出),
%进程可能会以任何退出代码终止。
捕获(关闭(流)、错误(进程错误(u、退出())和真)。
您可以调整
copy\u stream\u data/2
调用,将输出写入任何其他流。您所说的“获取输出”是什么意思?下面有一个示例,它大致满足您的要求。
output_from_process(Exec, Args) :-
process_create(Exec, Args, [stdout(pipe(Stream)),
stderr(pipe(Stream))]),
copy_stream_data(Stream, current_output),
% the process may terminate with any exit code.
catch(close(Stream), error(process_error(_,exit(_)), _), true).