Prolog 序言:将文本添加到文件末尾

Prolog 序言:将文本添加到文件末尾,prolog,Prolog,我想在prolog中将文本添加到数据库中。差不多 adding :- tell('a.txt'), write('abc'), told. 但不覆盖a.txt。我尝试过像这样使用append: append('a.txt'),write('abc'), told. 但它不起作用。侦听器只给出一个“否”响应,文件没有更改。 顺便说一句,我用的是Amzi Prolog 任何帮助都将不胜感激。您必须使用以下IO谓词:open/3、write/2、close/1 adding :- open('a.

我想在prolog中将文本添加到数据库中。差不多

adding :- tell('a.txt'), write('abc'), told.
但不覆盖a.txt。我尝试过像这样使用append:

append('a.txt'),write('abc'), told.
但它不起作用。侦听器只给出一个“否”响应,文件没有更改。 顺便说一句,我用的是Amzi Prolog


任何帮助都将不胜感激。

您必须使用以下IO谓词:open/3、write/2、close/1

adding :- open('a.txt', append, Handle), write(Handle, 'abc'), close(Handle).

在SWI序言中选中此项工作:

?- append('a.txt'), write('abc'), told.
true.

?- append('a.txt'), write('abc'), told.
true.

也许Amzi Prolog没有
append/1
,这会导致失败而不是异常。或者文件不可写(这会导致失败,而不是异常)。

详细解释“它不工作”的含义……您好,谢谢您的回复。侦听器只是给出“否”响应,文件a.txt没有改变。嘿,谢谢你的链接。我尝试了一下,奇怪的是,它只是将“abc”打印给侦听器,而不是文件。奇怪的是,从逻辑上讲,你所说的应该是有效的。@Hearty:使用write/2,在你的例子中是write(Handle,'abc')。啊,它现在有效了。非常感谢。还有@kaarel,谢谢你们两位的时间。真的很感谢。@衷心感谢大家投票选出他们的答案,如果其中一个答案解决了您的问题(在本例中是gusbro的答案),请不要忘记将其标记为“正确答案”。谢谢。是的,我用Amzi调试过,你说的似乎是真的,它会导致失败。另外,从这一点来看,Amzi似乎确实有append的问题。@衷心地说,这个链接讨论了append/3,它与append/1完全不同