我想从我的(yap)序言脚本中运行一个(python3)进程并读取其格式化为整数列表的输出,例如[1,2,3,4,5,6]
.
这就是我所做的:
process_create(path(python3),
['my_script.py', MyParam],
[stdout(pipe(Out))]),
read(Out, OutputList),
close(Out).
但是,它在read/2谓词处失败并出现错误:
PL_unify_term: PL_int64 not supported
Exception ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='UTF-8'>
BrokenPipeError: [Errno 32] Broken pipe
我确信我可以正确运行该过程,因为按预期将[stdout(std)]
参数提供给process_create
程序输出。[1,2,3,4,5,6]
奇怪的是,当我将过程更改为输出一些常数项(as constant_term
)时,它仍然会给出相同的PL_int64
错误。在进程的输出 ( [1,2,3,4,5,6].
) 中添加一个点并不能解决错误。使用read_term/3
给出了同样的错误。read_string/3
在 YAP-Prolog 中未定义。
我怎么解决这个问题?