python3打印到字符串

布拉德

使用Python 3,我有一个要移植到GUI的控制台应用程序。该代码具有许多打印语句,如下所示:

print(f1(), f2(), f3(), sep=getsep(), end=getend())

我想将这些调用转换为:

GuiPrintLine(f1(), f2(), f3(), sep=getsep(), end=getend())

每行最终都使用某些(未定义的)GUI框架进行渲染。

如果我可以将print的参数转换为print通常会产生的字符串,而没有实际打印到sysout的副作用,则这很容易做到。换句话说,我需要一个这样的函数:

s = print_to_string(*args, **kwargs)

如何格式化一组参数以将print(...)转换为一个字符串,该字符串产生与print()相同的输出?

我意识到我可以通过将所有arg与sep和end连接起来来模拟打印,但是如果有的话,我更喜欢使用内置解决方案。

使用打印和重定向sysout并不吸引人,因为它需要修改应用程序的全局状态,并且sysout可能同时用于其他诊断。

看来这在Python中应该是微不足道的,所以也许我只是缺少一些明显的东西。

谢谢你的帮助!

布拉德

通过字符串io找到了答案。这样,我不必模拟Print对sep / end的处理,甚至不必检查是否存在。

import io

def print_to_string(*args, **kwargs):
    output = io.StringIO()
    print(*args, file=output, **kwargs)
    contents = output.getvalue()
    output.close()
    return contents

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章