SWI-Prolog 写入文件

Posted

技术标签:

【中文标题】SWI-Prolog 写入文件【英文标题】:SWI-Prolog write to file 【发布时间】:2014-05-09 22:34:18 【问题描述】:

我看到了以下线程,它们非常有用并且与我的问题相关

Writing in file | Swi-Prolog | Windows\

Prolog insert, modify and delete facts on a separated database text file

我尝试使用 tell, tell see, seen 从文本文件中读取写入,但我得到相同的结果,当(我打开它并看到)时,文件上没有写入任何内容,并且在读取时系统读取 end_of_file或者在消息中或控制台上显示错误 以下是我的一些工作示例:

start1:-
    open('output.txt',write,OS),
    X = 'Hi all',
    write(OS,X),
    close(OS),
    open('output.txt',read,OS2),
    read(OS2,Input).


start1:-
    absolute_file_name('X.data',Abs),
    open(Abs,write,Out),
    tell(Abs),
    write('HiAll'),
    told,
    close(Out),
    open(Abs,read,In),
    see('X.data'),
    read(X),
    seen,
    write(X).

【问题讨论】:

读取(OS2,输入)。期望阅读以下代码正常读取的术语:- open('output.txt',read,In), repeat, read_line_to_codes(In,X), close(In), writef(X)。 我认为 open/close 与tell/see/told 兼容 @CapelliC 是对的。您应该返回并查看链接指向的示例。它们不会混合和匹配 ISO 和 Edinburgh 风格的 I/O 谓词 (cf. swi-prolog.org/pldoc/…)。您应该选择其中一个,看看效果如何。 亲爱的,我在文件中逐行保存了事实,并将其作为代码数组取回,当尝试在数据库中断言事实时,此操作不成功,我尝试转换为字符串 (使用 string_codes) 但我有错误“预期可调用的类型错误”并尝试使用 term_string 但出现未声明过程的错误。 我试图阅读 DCG 语法规则,但它看起来与列表有关 【参考方案1】:

非常感谢@CapelliC,我编写的以下代码运行良好 read 内置谓词用于读取术语,当到达文件末尾时显示错误,而不是我使用 read_line_to_codes

readfacts:- open('output.txt',read,In), repeat, read_line_to_codes(In,X),writef(" "), writef(X),nl, X=end_of_file,!, nl, close(In). writefacts:- open('output.txt',write,Out), write(Out,'Age(Peter,30)'), write(Out,'Skin(Smith,Black).'), close(Out).

【讨论】:

以上是关于SWI-Prolog 写入文件的主要内容,如果未能解决你的问题,请参考以下文章

VB 写入文件写入特定一行

游戏文件更新的时候,如何把安全的写入改成否

JAVA 写入TXT文件

Java 文件写入遇到问题

java如何将一个InputStream写入文件?

node 文件操作 读取,写入 目录的写入读取 文件流 写入流 管道流 压缩 解压