在Python 2.7.3中输出多行文件

时间:2014-07-27 12:07:44

标签: python python-2.7 clips declarative pyclips

我目前正在使用pyCLIPS在python中编写程序。

剪辑模块允许我通过使用以下方式将多行输出打印到终端:clips.PrintFacts()

但是,我想将其输出到文件以保存结果。我使用以下代码:

def Print():    
    f1=open('/var/log/combined/test.log', 'a')
    print >>f1, '- Facts -\n'
    print >>f1, clips.PrintFacts()
    print >>f1, '\n- Rules -\n'
    print >>f1, clips.Print.Rules()

第1和第3个打印命令成功将字符串打印到文件,但第2和第4个打印命令仍然只将剪辑结果输出到终端。以下是输出的示例:

============

root@ubuntu:/home/user/Desktop# python program.py
f-0    (initial-fact)
f-1    (duck)
f-2    (quack)
For a total of 3 facts.
MAIN:
Rule1
Rule2
Rule3
Rule4
Rule5
root@ubuntu:/home/user/Desktop# cat /var/log/combined/test.log
 - Facts -
None
 - Rules -
None
root@ubuntu:/home/user/Desktop#

============

clips.PrintFacts()部分从“f-0”开始,而clips.PrintRules()部分从“MAIN”开始。

提前感谢!

2 个答案:

答案 0 :(得分:1)

使用a附加到文件:

f1 = open('/var/log/combined/test.log', 'a+')
print >>f1, clips.PrintFacts()

您使用w覆盖每一行。

答案 1 :(得分:-1)

(这个答案是非常自发的,我不知道是不是真的,我只是有个主意。)

我认为它会写入每一行,但之后会在其上写下另一行。您应该将所有内容保存到字符串(string = string + clips.printFacts()),然后将其保存到文件中。