【问题标题】:Accessing and crawling the file-system in SWI-Prolog在 SWI-Prolog 中访问和爬取文件系统
【发布时间】:2024-01-05 22:36:01
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: prolog swi-prolog


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。这看起来不错。但它是新的吗?我使用的是 64 位版本 7.6.4(我在 Ubuntu 上,这是它附带的标准)。我试过使用模块(库(filesex))。这说的是真的。但我得到 ERROR: Undefined procedure: directory_member/3 (DWIM could not correct goal)