如何从swi prolog中执行的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数据(流

如何制作一个执行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数据(流、当前\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).