Document.add_paragraph()
ожидает строку. Ваша функция all_text()
не возвращает строку, а записывает в sys.stdout
(который по умолчанию перенаправлен на вашу консоль) и (неявно) возвращает None
.
Чистое решение, конечно, нужно изменить ваша all_text()
функция, чтобы она возвращала строку вместо записи в sys.stdout
ie
def all_text():
return "Line1\nLine2\nLine3"
Если ваша настоящая функция действительно много печатает в разных местах и / или вызывает функции, которые сами по себе печать в stdout et c, что делает «чистое решение» непрактичным или слишком дорогим, вы также можете взломать, перенаправив sys.stdout
на StringIO
и отправив собранные значения на add_paragraph
, ie:
import sys
try:
from io import StringIO # py3
except ImportError:
from cStringIO import StringIO
def all_text():
print("Line1\nLine2\nLine3")
def get_all_text():
sys.stdout = buffer = StringIO
try:
all_text()
return buffer.getvalue()
finally:
sys.stdout = sys.__stdout__
document.add_paragraph(get_all_text())