0

我需要使用以下代码将文件读入 prolog 中的数据库:

open('C:/Files/text.txt', read, S)

它读起来很完美,但我必须将我的 pl 用于另一台计算机,并且目录可能会有所不同,例如,如果使用

open('text.txt',read,S)

即使我的 pl 文件和 txt 位于根目录 (C:/Files/text.txt) 中,它也无法读取。

有没有更正阅读txt。无论其中的根 pl 和 txt 是什么,只是同一个文件夹很重要吗?

4

1 回答 1

0

您可以使用谓词 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'

咨询谓词在咨询期间使用不同的规则,它们相对于当前咨询的文件进行解析。

于 2016-09-16T20:10:37.453 回答