如何从 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))
如果您使用“加载构造...”菜单命令加载您的规则,目录将设置为包含规则的目录,您可以在创建和打开文件时指定部分目录路径。否则,您需要指定完整的文件路径。
我正在尝试找到一种从 运行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))
如果您使用“加载构造...”菜单命令加载您的规则,目录将设置为包含规则的目录,您可以在创建和打开文件时指定部分目录路径。否则,您需要指定完整的文件路径。