Can';t访问Prolog中的文件
我正在使用SWI Prolog学习Prolog 我发现下面的示例中存在一些问题,即访问一个文件并在其中写入用户在Prolog Shell中输入的内容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
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').