【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)
# 可以直接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%*********->
ref:
行内刷新:https://blog.csdn.net/weixin_30390075/article/details/98666769
行首,退格:https://www.jb51.net/article/55413.htm
sys.stdout:https://www.zhihu.com/question/48911955
https://blog.csdn.net/wuguangbin1230/article/details/77680058
pic from pexels.com
【python】sys.stdout输出不换行相关推荐
- Python sys.stdout
当我们在 Python 中打印对象调用 print(obj) 时候,事实上是调用了 sys.stdout.write(obj+'\n') print 将你需要的内容打印到了控制台,然后追加了一个换行符 ...
- Python——sys.stdout.flush()方法的作用
flush()的作用是刷新缓冲区. 缓冲区的刷新有三种:1,缓冲区满自动刷新:2,flush刷新:3,程序结束自动刷新 import time,sys def progress_bar(i):prin ...
- python中让输出不换行
Python2.x python2.x中输出默认是换行的,为了抑制换行,可以在打印最后加一个逗号 Python3.x 到了python3中,print 变成一个函数,这种语法便行不通了. 我们可以使用 ...
- Python print连续输出不换行
print被用于打印输出,当print()括号中没有内容,则代表输出一个换行. print() 当我们想连续输出多个字符时: print("H") print("e&qu ...
- python中如何输出空格换行_Python将文件中空格变成换行的方法如何做
比如文件中有这样的字符串: a.txt Rei9aiwe bohth4Zu Go3eimum iChieSh5 iveeSh2J eiziV0bo lu2Efooz feey5Ohr 要转换成下面的形 ...
- Python sys.stdout sys.stdin
引用自:https://www.cnblogs.com/keye/p/7859181.html 引用自:https://blog.csdn.net/sxingming/article/details/ ...
- python不换行空格输出_解决Python print输出不换行没空格的问题
解决Python print输出不换行没空格的问题 今天在做编程题的时候发现Python的print输出默认换行输出,并且输出后有空格. 题目要求输出 122 而我的输出是: 1 2 2 于是我百度查 ...
- [转载] Python print输出不换行没空格
参考链接: Python print() 今天在做编程题的时候发现Python的print输出默认换行输出,并且输出后有空格.题目要求输出 122 而我的输出是: 1 2 2 于是我百度查到取消pri ...
- python stdout_python中stdout输出不缓存的设置方法
考虑以下python程序: 复制代码 代码如下: #!/usr/bin/env python import sys sys.stdout.write("stdout1 ") sys ...
最新文章
- 玩心马宗骥:游戏持续“霸榜”幕后的数据真相
- C语言再学习 -- C 预处理器
- 【java学习】Arraylist和LinkedList使用场景与性能对比
- PAT1041 考试座位号 (15 分)
- java 哈希一致算法_一致哈希算法Java实现
- jQuery基础,javascript
- 【讲师专访】Oracle ACE 总监侯圣文:不懂开发的运维终将被淘汰
- 【渝粤教育】国家开放大学2018年春季 0557-22T广告设计 参考试题
- html动态留言墙代码,JavaScript实现动态留言板
- java商城源码(servlet,springboot,html,vue,uniapp,小程序,android)一套任意组合
- DIY NAS硬件选择
- PTA---L2-016 愿天下有情人都是失散多年的兄妹(深度优先)
- Hbase GC调优原理分析
- 贝塔分布与狄利克雷分布
- 组合业务流程管理与区块链
- 【故障检测】基于 KPCA 的故障检测研究(Matlab代码实现)
- 泰迪杯C题第三问[文本有效性分析] (1)
- AD20和立创EDA设计(4)PCB设计
- What CANN Can?一辆小车背后的智能故事
- PyTorch faster_rcnn之一源码解读二 model_util
热门文章
- vue项目dist编译文件部署到服务器:页面空白、F5刷新报错404、403报错、等等bug - 总结篇
- Vue2+VueRouter2+webpack 构建项目实战系列(完整版) - 收录篇
- phpcmsV9内容页hits点击量 - 调用总结
- 好看的极简网站导航源码自适应静态页
- pythonmatplotlib刷新_matplotlib:如何刷新figure.canvas
- python爬app_Python爬虫抓取手机APP的传输数据
- 不限速下载工具Persepolis Download Manager中文免费版
- http状态码批量查询工具V2.0
- 怎么用vc采集ni卡数据_作家型INFJ的N灵感采集 | INFJ自我成长
- Matrix响应式软件应用类型博客模板