2017-09-21 49 views
0

假设我具有打印功能的参数和kwargs,是否有任何方法可以获取打印字符串的长度?Python获取打印字符串的长度

例如

>>> args = [1, 2, 3, 4] 
>>> kwargs = {'sep':'<='} 
>>> print (*args, **kwargs) 
1<=2<=3<=4 
>>> printlen (*args, **kwargs) 
11 

回答

1

您可以使用StringIO执行此操作并将标准输出捕获为字符串。

from io import StringIO 
import sys 
old_out = sys.stdout # Store stdout to a temp 
result = StringIO() # Will capture standard output as string 
sys.stdout = result # assign result to sys.stdout 
args = [1, 2, 3, 4] 
kwargs = {'sep':'<='} 
print (*args, **kwargs) # This will be written to result, Not displayed in stdout 
sys.stdout = old_out # restore stdout to make things normal 
res = result.getvalue() 
print ("result: {}, length: {}".format(res, len(res))) 

请注意,发送到标准输出的所有内容都将被捕获到结果变量中,直到您还原stdout为止。