StringIO позволяет использовать строку, как если бы это был файл. Наряду с использованием print(..., file=...)
вы можете сделать:
import io
with io.StringIO() as fp:
print("hi", "mom", sep=" ", file=fp)
print('hello ', end='', file=fp)
print('world!', file=fp)
str = fp.getvalue()
print(str)
, что дает
hi mom
hello world!
как (я думаю) ты хочешь. Вы также можете использовать fp.readlines()
, если вы хотите список строк для каждой строки.
Вы также можете использовать tempfile , который может использовать файловую систему (но не может), с почти идентичным синтаксисом:
import tempfile
with tempfile.TemporaryFile(mode="w+") as fp:
print("hi", "mom", sep=" ", file=fp)
print('hello ', end='', file=fp)
print('world!', file=fp)
fp.seek(0)
str = fp.read()
print(str)
Вам необходимо указать mode
, поскольку по умолчанию выдает двоичный файл, который не позволяет вам print
, и явно перематываете назад в начало перед чтением. (FWIW, более ранняя версия моего ответа содержала flush=True
для каждого print
, но я не думаю, что это необходимо.)