首页 > 解决方案 > 在 SWI-Prolog 中访问和爬取文件系统

问题描述

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

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

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

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

标签: prologswi-prolog

解决方案


最近引入了一个不错的谓词,directory_member /3。这正是您查询文件结构所需要的:

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

推荐阅读