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

时间:2017-07-11 02:23:05

标签: clips

我正在尝试找到一种从正在运行的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上运行CLIPS 6.3。

提前感谢您的帮助。

伯尼

1 个答案:

答案 0 :(得分:1)

CLIPS系统函数调用C系统库函数。系统调用的任何输出都将被定向到终端/控制台(C标准输出)。如果您将CLIPS作为终端/控制台应用程序运行,您将看到指向终端/控制台的输出。如果您正在使用CLIPS IDE,则不会看到C标准输出的任何输出,因为IDE对话框窗口正在捕获并直接从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))

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