标签:python python-3-x string stringio
使用Python 3,我有一个控制台应用程序,我正在移植到GUI.代码有一堆打印语句,如下所示:
print(”,’p’,”,sep =”,end =”)
(实际上,位置参数实际上是从函数返回的,并且可能有多于或少于3,如下所示:
print(f1(),f2(),f3(),sep =”,end =”)
我想将这些调用转换为:
GuiPrintLine(”,’p’,”,sep =”,end =”)
其中每一行最终使用GUI框架呈现.
如果我可以将参数转换为字符串,这很容易做到.我想将参数列表格式化为单个字符串,打印通常会输出如下:
def GuiPrintLine(*args, **kwargs):
s = text.format(*args, **kwargs)
# ... then display the string on the gui ...
但是,这需要格式字符串(文本).有一种简单的方法可以自动生成与打印功能相同的输出吗?我意识到我可以通过用sep和end结束所有args来模拟打印,但我更愿意使用内置的解决方案(如果有的话).
使用打印和重定向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
标签:python,python-3-x,string,stringio 来源: https://codeday.me/bug/20190828/1755861.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。