我需要使用以下代码将文件读入 prolog 中的数据库:
open('C:/Files/text.txt', read, S)
它读起来很完美,但我必须将我的 pl 用于另一台计算机,并且目录可能会有所不同,例如,如果使用
open('text.txt',read,S)
即使我的 pl 文件和 txt 位于根目录 (C:/Files/text.txt) 中,它也无法读取。
有没有更正阅读txt。无论其中的根 pl 和 txt 是什么,只是同一个文件夹很重要吗?
我需要使用以下代码将文件读入 prolog 中的数据库:
open('C:/Files/text.txt', read, S)
它读起来很完美,但我必须将我的 pl 用于另一台计算机,并且目录可能会有所不同,例如,如果使用
open('text.txt',read,S)
即使我的 pl 文件和 txt 位于根目录 (C:/Files/text.txt) 中,它也无法读取。
有没有更正阅读txt。无论其中的根 pl 和 txt 是什么,只是同一个文件夹很重要吗?
您可以使用谓词 absolute_file_name/[2,3] 查看如何解析相对文件名。例如我得到:
?- absolute_file_name('text.txt', X, [mode(read)]).
X = 'c:/users/user/documents/prolog/text.txt'.
通常工作目录用于从顶层解析相对文件名。您可以按如下方式访问和修改工作目录:
/* get the wd */
?- working_directory(X, X).
X = 'c:/users/user/documents/prolog/'.
/* set the wd */
?- working_directory(_, 'c:/users/user/desktop').
true.
?- absolute_file_name('text.txt', X, [mode(read)]).
X = 'c:/users/user/desktop/text.txt'
咨询谓词在咨询期间使用不同的规则,它们相对于当前咨询的文件进行解析。