Can';t访问Prolog中的文件

Can';t访问Prolog中的文件,prolog,Prolog,我正在使用SWI Prolog学习Prolog 我发现下面的示例中存在一些问题,即访问一个文件并在其中写入用户在Prolog Shell中输入的内容 processFile(File) :- see(File), processFile, seen. processFile :- read(Query), process(Query). process(end_of_file) :- !. p

我正在使用SWI Prolog学习Prolog

我发现下面的示例中存在一些问题,即访问一个文件并在其中写入用户在Prolog Shell中输入的内容

processFile(File) :- see(File),
                 processFile,
                 seen.

processFile :- read(Query),
               process(Query).

process(end_of_file) :- !.

process(Query) :- Query,
                  write(Query),
              nl,
              processFile.
问题是,在Prolog shell中,当我尝试使用文件名执行processFile语句时,我得到一个错误:

如果我给出一个带有扩展名的文件名,我将获得此错误消息(似乎将扩展名解释为运算符):

如果我给出了一个没有扩展名的文件名,我将获得另一条错误消息(该文件不存在):

因此,我还尝试在prolog源代码文件所在的同一文件夹中创建一个名为myFile(无扩展名)的新文件,但我仍然获得:

8 ?- processFile(myFile).
ERROR: see/1: source_sink `myFile' does not exist (No such file or directory)

为什么??错误在哪里?如何解决此问题?

您需要引用文件名

processFile('myFile.txt').

正如@larsmans所说,使用单引号

如果您确定文件存在,则“不存在”错误可能是因为当前工作目录不是您所认为的


尝试使用
cd('directory-path-here')

将当前工作目录更改为.txt文件所在的位置。不,不工作…如果我尝试:5?-processFile('myFile.txt')。错误:请参阅/1:source\u sink`myFile.txt'不存在(没有这样的文件或目录)。我也尝试将文件创建到源目录中,但没有work@closing_voters:关闭原因不适用。“很容易说出这里的问题”。这是一个关于OP代码的特定问题的非常具体的问题。如果我做类似于:4?-cd('C:\Users\Andrea\Documents\Prolog\lezione6\')。| | |而且它看起来被阻止了(我无法插入其他语句)@AndreaNobili我尝试使用正斜杠字符
('C:/Users/…')
,或双反斜杠
('C:\\Users\\…')
8 ?- processFile(myFile).
ERROR: see/1: source_sink `myFile' does not exist (No such file or directory)
processFile('myFile.txt').