从txt读取文件

时间:2019-05-16 13:20:28

标签: prolog swi-prolog

我在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>

我认为这个错误很明显地告诉我它找不到测试文件,但我不明白为什么。该怎么办?

1 个答案:

答案 0 :(得分:1)

问题是Prolog的插入程序会在其开始的目录中查找。因此此错误表明此特定目录不包含test.txt文件。因此,您应该编写以下内容,而不是编写read_input('test.txt', N, K, C).read_input('.../test.txt', N, K, C),其中...是此文件的路径。