Используя Python 3, у меня есть консольное приложение, которое я переношу в графический интерфейс. В коде есть набор операторов печати, что-то вроде этого:
print(f1(), f2(), f3(), sep=getsep(), end=getend())
Я хотел бы преобразовать эти вызовы во что-то вроде:
GuiPrintLine(f1(), f2(), f3(), sep=getsep(), end=getend())
где каждая строка в конечном итоге отображается с использованием некоторой (неопределенной) структуры графического интерфейса.
Это легко сделать, если я могу преобразовать аргументы для печати в строку, которую print обычно выдает без побочного эффекта фактической печати в sysout. Другими словами, мне нужна такая функция:
s = print_to_string(*args, **kwargs)
Как отформатировать набор параметров для print(...) в одну строку, которая выдает тот же вывод, что и print()?
Я понимаю, что могу эмулировать печать, объединяя все аргументы с sep и end, но я бы предпочел использовать встроенное решение, если оно есть.
Использование печати и перенаправления sysout нецелесообразно, так как требует изменения глобального состояния приложения, а sysout может одновременно использоваться для другой диагностики.
Кажется, в Python это должно быть тривиально, так что, возможно, я просто упускаю что-то очевидное.
Спасибо за любую помощь!
''.join(args)
достигает ли того, что вам нужно? - person DaveBensonPhillips   schedule 03.10.2016kwargs['sep'].join(*args, kwargs[end])
, но это сложно из-за возможного отсутствия sep/end. - person Brad   schedule 03.10.2016print
иGuiPrintLine
? - person baranskistad   schedule 03.10.2016sep.join(args) + end
кажется лучшим решением. - person Rockybilly   schedule 03.10.2016GuiPrintLine
сделал. Вы хотите, чтобы он создал приложение curses? Создать HTTP-сервер и распечатать HTML? - person baranskistad   schedule 03.10.2016