2011-06-23 109 views
4

我想在prolog中將文本添加到數據庫。類似於Prolog:將文本添加到文件的末尾

adding :- tell('a.txt'), write('abc'), told. 

但不覆蓋a.txt。我試過使用像這樣的追加:

append('a.txt'),write('abc'), told. 

但它沒有工作。聽衆只是給出一個'不'的迴應,文件沒有改變。 我使用Amzi Prolog,順便說一句。

任何幫助將不勝感激。

+0

請詳細解釋「它沒有工作」是什麼意思... – Kaarel

+0

嗨,感謝您的回覆。聽衆只給出'不'的迴應,而文件a.txt沒有改變。 – Hearty

回答

5

您必須使用這些IO謂詞:open/3,write/2,close/1。

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

檢查here

+0

嘿,謝謝你的鏈接。我試了一下,奇怪的是,它只是將'abc'打印給聽衆而不是文件。奇怪,邏輯上你說的應該工作。 – Hearty

+0

@Hearty:在你的例子中使用write/2,即write(Handle,'abc')。 – gusbro

+0

啊,現在有效。謝謝。和@kaarel,謝謝你的時間。非常感謝。 – Hearty

1

在SWI-Prolog的工作原理:

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

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

也許暗洗的Prolog沒有append/1,這將導致失敗,而不是例外。或者,也許該文件不可寫(這會導致失敗,而不是例外)。

+0

謝謝。是的,我已經使用Amzi進行了調試,並且您所說的看起來確實會導致失敗。此外,從這個[鏈接](http://forum.amzi.com/viewtopic.php?f=4&t=569)可以看出,Amzi似乎確實存在追加問題。 – Hearty

+0

@熱心此鏈接討論與append/1完全不同的append/3 – Kaarel

相關問題