ste*_*ten 1 file-io prolog prolog-toplevel
如何将listing/0SWI-Prolog REPL 的输出写入文件?
?- listing > file.txt.
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以打开一个文件进行编写并重定向current_ouput到它,如下所示:
?- current_output(Orig), % save current output
open('file.txt', write, Out),
set_output(Out),
listing,
close(Out),
set_output(Orig). % restore current output
Run Code Online (Sandbox Code Playgroud)
或者,SWI-Prolog提供一个谓词with_output_to/2,可用于将当前输出重定向到一个目标.请务必阅读文档,但简而言之:
?- open('file.txt', write, Out),
with_output_to(Out, listing),
close(Out).
Run Code Online (Sandbox Code Playgroud)
现在输出listing/0将被写入file.txt.但请记住,那里会有很多东西.您可能想要listing/1用于特定谓词?在这种情况下,使用clause/2和portray_clause/2是另一种选择,特别是如果您想要更多地控制写入文件的内容和方式.listing仅用于交互式使用我猜.