关于sys.stdout和print的区别详解
一、sys.stdout的形式就是print的一种默认输出格式,等于print"%VALUE%"
print函数是对sys.stdout的高级封装,看下print函数的解释
Printsthevaluestoastream,ortosys.stdoutbydefault. Optionalkeywordarguments: file:afile-likeobject(stream);defaultstothecurrentsys.stdout. sep:stringinsertedbetweenvalues,defaultaspace. end:stringappendedafterthelastvalue,defaultanewline.
print是默认调用了sys.stdout.write()方法将输出打印到控制台
print也可通过file参数将输出打印到其他文件中
f=open('test.txt','a') print('thisisatest',file=f)
二、sys.stdout.write()输出不会自动换行,没有end,可用转义字符自行控制
/n换行
/r回车到本行首,可刷新输出
如用sys.stdout.write()和\r实现自定义进度条
#-*-coding:utf-8-*- fromtqdmimporttqdm importtime importsys foriintqdm(range(100)): time.sleep(.1) foriinrange(100): a=(i+1)/5 b=20-a #sys.stdout.write('\r>>convertimage%d/%d'%(i,b)) sys.stdout.write('\r|%s%s|%d%%'%(a*'▇',b*'',i+1)) sys.stdout.flush() time.sleep(.1)
运行结果如下图:
sys.stdout.flush()强制刷新缓冲区,
缓冲区的刷新方式:
1.flush()刷新缓存区
2.缓冲区满时,自动刷新
3.文件关闭或者是程序结束自动刷新。
当我们需要打印一些字符时,并不是立刻就打印,而是先将需要打印的字符放入缓冲区,在缓冲区刷新时打印,当缓冲区未满,或者程序运行未结束时,可使用sys.stdout.flush()强制刷新缓冲区,立刻进行打印;
附:写出漂亮的进度条模块tqdm
fromtqdmimporttqdm importtime foriintqdm(range(10000)): time.sleep(0.01)
运行结果如下:
以上这篇关于sys.stdout和print的区别详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。