在处理程序打进度条时,希望不换行显示进度,可以使用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输出不换行相关推荐

  1. Python sys.stdout

    当我们在 Python 中打印对象调用 print(obj) 时候,事实上是调用了 sys.stdout.write(obj+'\n') print 将你需要的内容打印到了控制台,然后追加了一个换行符 ...

  2. Python——sys.stdout.flush()方法的作用

    flush()的作用是刷新缓冲区. 缓冲区的刷新有三种:1,缓冲区满自动刷新:2,flush刷新:3,程序结束自动刷新 import time,sys def progress_bar(i):prin ...

  3. python中让输出不换行

    Python2.x python2.x中输出默认是换行的,为了抑制换行,可以在打印最后加一个逗号 Python3.x 到了python3中,print 变成一个函数,这种语法便行不通了. 我们可以使用 ...

  4. Python print连续输出不换行

    print被用于打印输出,当print()括号中没有内容,则代表输出一个换行. print() 当我们想连续输出多个字符时: print("H") print("e&qu ...

  5. python中如何输出空格换行_Python将文件中空格变成换行的方法如何做

    比如文件中有这样的字符串: a.txt Rei9aiwe bohth4Zu Go3eimum iChieSh5 iveeSh2J eiziV0bo lu2Efooz feey5Ohr 要转换成下面的形 ...

  6. Python sys.stdout sys.stdin

    引用自:https://www.cnblogs.com/keye/p/7859181.html 引用自:https://blog.csdn.net/sxingming/article/details/ ...

  7. python不换行空格输出_解决Python print输出不换行没空格的问题

    解决Python print输出不换行没空格的问题 今天在做编程题的时候发现Python的print输出默认换行输出,并且输出后有空格. 题目要求输出 122 而我的输出是: 1 2 2 于是我百度查 ...

  8. [转载] Python print输出不换行没空格

    参考链接: Python print() 今天在做编程题的时候发现Python的print输出默认换行输出,并且输出后有空格.题目要求输出 122 而我的输出是: 1 2 2 于是我百度查到取消pri ...

  9. python stdout_python中stdout输出不缓存的设置方法

    考虑以下python程序: 复制代码 代码如下: #!/usr/bin/env python import sys sys.stdout.write("stdout1 ") sys ...

最新文章

  1. 玩心马宗骥:游戏持续“霸榜”幕后的数据真相
  2. C语言再学习 -- C 预处理器
  3. 【java学习】Arraylist和LinkedList使用场景与性能对比
  4. PAT1041 考试座位号 (15 分)
  5. java 哈希一致算法_一致哈希算法Java实现
  6. jQuery基础,javascript
  7. 【讲师专访】Oracle ACE 总监侯圣文:不懂开发的运维终将被淘汰
  8. 【渝粤教育】国家开放大学2018年春季 0557-22T广告设计 参考试题
  9. html动态留言墙代码,JavaScript实现动态留言板
  10. java商城源码(servlet,springboot,html,vue,uniapp,小程序,android)一套任意组合
  11. DIY NAS硬件选择
  12. PTA---L2-016 愿天下有情人都是失散多年的兄妹(深度优先)
  13. Hbase GC调优原理分析
  14. 贝塔分布与狄利克雷分布
  15. 组合业务流程管理与区块链
  16. 【故障检测】基于 KPCA 的故障检测研究(Matlab代码实现)
  17. 泰迪杯C题第三问[文本有效性分析] (1)
  18. AD20和立创EDA设计(4)PCB设计
  19. What CANN Can?一辆小车背后的智能故事
  20. PyTorch faster_rcnn之一源码解读二 model_util

热门文章

  1. vue项目dist编译文件部署到服务器:页面空白、F5刷新报错404、403报错、等等bug - 总结篇
  2. Vue2+VueRouter2+webpack 构建项目实战系列(完整版) - 收录篇
  3. phpcmsV9内容页hits点击量 - 调用总结
  4. 好看的极简网站导航源码自适应静态页
  5. pythonmatplotlib刷新_matplotlib:如何刷新figure.canvas
  6. python爬app_Python爬虫抓取手机APP的传输数据
  7. 不限速下载工具Persepolis Download Manager中文免费版
  8. http状态码批量查询工具V2.0
  9. 怎么用vc采集ni卡数据_作家型INFJ的N灵感采集 | INFJ自我成长
  10. Matrix响应式软件应用类型博客模板