python 之 sys.stdout输出不换行
在处理程序打进度条时,希望不换行显示进度,可以使用sys.stdout相关函数来进行处理。
1.print 输出不换行
首先可以使用print函数来整体输入,利用,结尾就可以在同一行内显示:
# python=2.7,py3.x print要加括号
for i in range(10):
print i,
>>> 0 1 2 3 4 5 6 7 8 9
但是这种方法只能在一行里连续输出,并且只能在换行时候才显示出来。
2.sys.stdout进行实时显示
为了进行实时显示,我们需要利用sys.stdout来实现。
import sys
for i in range(10):
sys.stdout.write(str(i))
sys.stdout.flush()
# 输出连续的字符
>>> 0123456789
# 可以利用这个做一个进度条:
sys.stdout.write('Processing>>>')
for i in range(10):
sys.stdout.write('*')
sys.stdout.flush()
>>> Processing>>>**********
但是这种方法输出的是不断累加的,进度条会不断增加。如果想要输出百分数不断刷新精度就需要利用额外的方法了。
3.回车或退格符的使用
stdout.write将需要写的内容放到缓存里,而后flush来进行刷新。为了不换行不叠加的显示前文的信息,我们可以利用\r将光标移到行首,然后将前面的输出覆盖即可显示新的内容:
for i in range(10):
sys.stdout.write(str(i)+'\r')
sys.stdout.flush()
time.sleep(0.5)
# 将依次输出0~9十个数字
>>> 9
# 我们可以输出对应的百分数进度
for i in range(10):
sys.stdout.write(str(i+1/1*10)+'%\r')
sys.stdout.flush()
time.sleep(0.5)
# 将依次输出10%~100%
>>> %100
# 稍微改造一下就是很好看的进度条
for i in range(10):
bar_str = i * '>'
sys.stdout.write(str((i+1)/1*10)+'%' + bar_str + '\r')
sys.stdout.flush()
time.sleep(0.5)郑州妇科医院哪家好 http://www.zzkedayy.com/
# 可以直接copy上面的代码就可以输出下面的进度条样式,在同一行中刷新百分数,延长进度符号
>>> 100%>>>>>>>>>
除了使用\r外,还可以使用退格符号\b在进度条后进行刷新:
for i in range(10):
sys.stdout.write('*->'+ '\b\b') #为了不断加长中间的*,需要先将->删除再写入
sys.stdout.flush()
time.sleep(0.5)
# 带箭头的进度条
>>> **********->
# 最后把百分数也加上
for i in range(10):
bar_str = i * '*' + '->'
sys.stdout.write(str((i+1)/1*10)+'%' + bar_str + '\b\b\r')
sys.stdout.flush()
time.sleep(0.5)
# 刷新百分数和逐渐增长的进度条:
>>> 100%*********->
python 之 sys.stdout输出不换行的更多相关文章
- python之sys.stdout、sys.stdin以及设置打印到日志文件等
转自:https://www.cnblogs.com/BigFishFly/p/6622784.html python之sys.stdout.sys.stdin 转自:http://www.cnblo ...
- python中如何使输出不换行
1.在python 2.x版本中,使用“,”(不含双引号)可使输出不换行,例如 2.python 3.x版本输出不换行格式如下 print(x, end="") end=&q ...
- Python 为什么sys.stdout.write 输出时后面总跟一个数字
sys.stdout 是标准输出文件.write就是往这个文件写数据. 合起来就是打印数据到标准输出 因为-在交互模式下会输出函数返回值,而write会返回输出的字符数量.在命令行里不会显示
- python 中sys.stdout.write 和 print >> sys.stdout的区别(转)
下面应该可以解你的惑了: print >> sys.stdout的形式就是print的一种默认输出格式,等于print "%VALUE%" 看下面的代码的英文注释,是p ...
- Python 标准输出 sys.stdout 重定向(转)
add by zhj: 其实很少使用sys.stdout,之前django的manage.py命令的源码中使用了sys.stdout和sys.stderr,所以专门查了一下 这两个命令与print的区 ...
- python之sys.stdout、sys.stdin
转自:http://www.cnblogs.com/turtle-fly/p/3280519.html 本文环境:Python 2.7 使用 print obj 而非 print(obj) sys. ...
- Python 标准输出 sys.stdout 重定向
本文环境:Python 2.7 使用 print obj 而非 print(obj) 一些背景 sys.stdout 与 print 当我们在 Python 中打印对象调用 print obj 时候, ...
- python中sys.stdout、sys.stdin
如果需要更好的控制输出,而print不能满足需求,sys.stdout,sys.stdin,sys.stderr就是你需要的. 1. sys.stdout与print: 在python中调用print ...
- python(5)- sys.stdout()实现进度条
1. 使用\r , 让其始终在行首输出,实现进度条 import sys, time ''' 使用\r 来实现进度条的效果,\r 是光标移到行首但不换行. 假设文件大小为60,一下下载1, 下载到60 ...
随机推荐
- [RN] React Native 使用 teaset(Drawer)实现侧边菜单
https://www.cnblogs.com/crazycode2/p/9537518.html
- bzoj3589 动态树 求链并 容斥
bzoj3589 动态树 链接 bzoj 思路 求链并. 发现只有最多5条链子,可以容斥. 链交求法:链顶是两条链顶深度大的那个,链底是两个链底的\(lca\) 如果链底深度小于链顶,就说明两条链没有 ...
- QT QWidget 关闭的流程
当QWidget被点击右上角“X”关闭时: 1.调用虚函数closeEvent 2.调用QWidget的析构函数
- 应用JWT进行用户认证及Token的刷新
本文将通过实际的例子来演示如何在ASP.NET Core中应用JWT进行用户认证以及Token的刷新方案(ASP.NET Core 系列目录) 一.什么是JWT? JWT(json web token ...
- java基础 类 & 继承
类 在Java中,类文件是以.java为后缀的代码文件,在每个类文件中可以有多个类,但是最多只允许出现一个public类,当有public类的时候,类文件的名称必须和public类的名称相同,若不存在 ...
- 微慕WordPress小程序增强版
2017年1月9日,张小龙在2017微信公开课Pro上发布的微信小程序正式上线.在过去的2年多的时间里,微信小程序领头,各大互联网平台也不甘落后,陆续推出自己的小程序.2018年7月4日,百度智能小程 ...
- mac os 配置
/Users/xxx/odoo-13.0/odoo-bin -c /Users/xxx/odoo-13.0/debian/odoo.conf
- python读取word中的段落、表、图+++++++++++Doc转换Docx
读取文本.图.表.解压信息 import docx import zipfile import os import shutil '''读取word中的文本''' def gettxt(): file ...
- 你不知道的js——数组 join
你可能对使用数组的 join 方法已经轻车熟路,但你也许不知道: 10.If element0 is undefined or null, let R be the empty String; oth ...
- laravel如何引用外部文件
(1).首先在app\Http\routes.php中定义路由: 1 2 3 Route::get('view','ViewController@view'); Route::get('article ...