我在Windows 10中使用SWI-Prolog版本8.0.2,我编写了这段代码以从文本中读取文件。假设我在与prolog程序(name: a)。我的代码:
read_input(File, N, K, C) :-
open(File, read, Stream),
read_line(Stream, [N, K]),
read_line(Stream, C).
read_line(Stream, L) :-
read_line_to_codes(Stream, Line),
atom_codes(Atom, Line),
atomic_list_concat(Atoms, ' ', Atom),
maplist(atom_number, Atoms, L).
假设文本文件包含以下内容:
10 3
1 3 1 3 1 3 3 2 2 1
因此,使用此查询:read_input('test.txt', N, K, C).
我期望:
N = 10,
K = 3,
C = [1, 3, 1, 3, 1, 3, 3, 2, 2|...]
相反,我收到此错误:
ERROR: source_sink `test' does not exist (No such file or directory)
ERROR: In:
ERROR: [9] open(test,read,_4538)
ERROR: [8] read_input(test,_4564,_4566,_4568) at c:/users/lezz/desktop/pl/a.pl:39
ERROR: [7] <user>
我认为这个错误很明显地告诉我它找不到测试文件,但我不明白为什么。该怎么办?
答案 0 :(得分:1)
问题是Prolog的插入程序会在其开始的目录中查找。因此此错误表明此特定目录不包含test.txt文件。因此,您应该编写以下内容,而不是编写read_input('test.txt', N, K, C).
:
read_input('.../test.txt', N, K, C)
,其中...是此文件的路径。