在 SWI-Prolog 中访问和爬取文件系统

Accessing and crawling the file-system in SWI-Prolog

如何与 SWI-Prolog 中的文件系统交互?

我想做这样的事情。编写一些匹配文件的谓词(名称,或打开它们并匹配内容)。但是然后使用 Prolog 来驱动这个系统,这样我就可以在整个过程中进行查询和推理。

我假设我需要提前获取有关整个文件树的数据。或者我可以通过一些递归谓词中的文件系统动态生成 "crawl"。

但是除了打开、关闭、读取和写入单个文件之外,我找不到任何示例或教程。

最近介绍了一个很好的谓词,directory_member/3。这正是您查询文件结构所需要的:

?- directory_member('/home/carlo/swipl-devel',Entry,[recursive(true)]).
Entry = '/home/carlo/swipl-devel/INSTALL' ;
Entry = '/home/carlo/swipl-devel/bench' ;
...