如何从 CLIPS 程序中获取目录列表

How to get a directory listing from a CLIPS program

我正在尝试找到一种从 运行ning CLIPS 程序中获取目录列表的方法。最终目标是让我的 CLIPS 程序 运行,找到一组事实文件加载到 CLIPS 中,然后 运行 我的规则。

根据http://www2.cs.siu.edu/~rahimi/cs537/slides/big-2.pdf,我尝试了

(defrule list-the-directory 
=>
  (printout t (system “ls ” “*.txt”) crlf)
)

该函数调用无异常完成但未返回任何内容。

哦,我在 Mac OS X 上 运行ning CLIPS 6.3。

在此先感谢您的帮助。

伯尼

CLIPS系统函数调用C系统库函数。系统调用的任何输出都将被定向到 terminal/console(C 标准输出)。如果您将 运行 CLIPS 作为 terminal/console 应用程序,您将看到指向 terminal/console 的输出。如果您使用的是 CLIPS IDE,您将看不到 C 标准输出的任何输出,因为 IDE 对话框 window 正在直接从 CLIPS 捕获和显示输出。

如果将系统命令的输出定向到文件,则可以使用 CLIPS I/O 命令打开文件并打印其内容:

(defrule list-the-directory
   =>
   (system "ls > out.txt")
   (open "out.txt" out "r")
   (bind ?line (readline out))
   (while (neq ?line EOF)
      (printout t ?line crlf)
      (bind ?line (readline out)))
   (close out))

如果您使用“加载构造...”菜单命令加载您的规则,目录将设置为包含规则的目录,您可以在创建和打开文件时指定部分目录路径。否则,您需要指定完整的文件路径。