Вывести несколько строк в файл в Python 2.7.3

В настоящее время я пишу программу на python с pyCLIPS.

Модуль clips позволяет мне печатать несколько строк вывода в терминал, просто используя: 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() начинается с "ГЛАВНАЯ".

заранее спасибо!

2 ответа

Решение

Использование a добавить в файл:

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

Вы перезаписываете каждую строку, используя w,

(Этот ответ очень спонтанный, и я не знаю, правда ли это, у меня просто есть идея.)

Я думаю, что он пишет каждую строку, но затем пишет еще одну строку поверх него. Вы должны сохранить все в строку (string = string + clips.printFacts()), а затем сохранить это в файл.

Другие вопросы по тегам