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

  1. python之sys.stdout、sys.stdin以及设置打印到日志文件等

    转自:https://www.cnblogs.com/BigFishFly/p/6622784.html python之sys.stdout.sys.stdin 转自:http://www.cnblo ...

  2. python中如何使输出不换行

    1.在python 2.x版本中,使用“,”(不含双引号)可使输出不换行,例如 2.python 3.x版本输出不换行格式如下 print(x, end="")    end=&q ...

  3. Python 为什么sys.stdout.write 输出时后面总跟一个数字

    sys.stdout 是标准输出文件.write就是往这个文件写数据. 合起来就是打印数据到标准输出 因为-在交互模式下会输出函数返回值,而write会返回输出的字符数量.在命令行里不会显示

  4. python 中sys.stdout.write 和 print >> sys.stdout的区别(转)

    下面应该可以解你的惑了: print >> sys.stdout的形式就是print的一种默认输出格式,等于print "%VALUE%" 看下面的代码的英文注释,是p ...

  5. Python 标准输出 sys.stdout 重定向(转)

    add by zhj: 其实很少使用sys.stdout,之前django的manage.py命令的源码中使用了sys.stdout和sys.stderr,所以专门查了一下 这两个命令与print的区 ...

  6. python之sys.stdout、sys.stdin

    转自:http://www.cnblogs.com/turtle-fly/p/3280519.html 本文环境:Python 2.7  使用 print obj 而非 print(obj) sys. ...

  7. Python 标准输出 sys.stdout 重定向

    本文环境:Python 2.7 使用 print obj 而非 print(obj) 一些背景 sys.stdout 与 print 当我们在 Python 中打印对象调用 print obj 时候, ...

  8. python中sys.stdout、sys.stdin

    如果需要更好的控制输出,而print不能满足需求,sys.stdout,sys.stdin,sys.stderr就是你需要的. 1. sys.stdout与print: 在python中调用print ...

  9. python(5)- sys.stdout()实现进度条

    1. 使用\r , 让其始终在行首输出,实现进度条 import sys, time ''' 使用\r 来实现进度条的效果,\r 是光标移到行首但不换行. 假设文件大小为60,一下下载1, 下载到60 ...

随机推荐

  1. LeetCode 641. Design Circular Deque

    原题链接在这里:https://leetcode.com/problems/design-circular-deque/ 题目: Design your implementation of the c ...

  2. Rpm Creating Subpackages

    转自:http://ftp.rpm.org/max-rpm/s1-rpm-subpack-spec-file-changes.html Spec File Changes For Subpackage ...

  3. ESA2GJK1DH1K升级篇: 升级STM32 预热: 单片机每隔一定时间 使用 http 获取天气

    前言: 实现功能概要: STM32使用AT指令控制Wi-Fi以TCP方式连接服务器(YY天气Web服务器),然后使用http的get协议获取今天的天气数据 单片机提取今天的温度和湿度数据,把温湿度数据 ...

  4. 洛谷 P1801 黑匣子_NOI导刊2010提高(06) 题解

    昨晚恶补了一下二叉堆的内容 然后就找了几个二叉堆的题来做awa 然后发现用二叉堆做这题复杂度是O(nlogn) 但是有O(n)的解法 (某大佬这么说) 思路大概就是: 利用一个大根堆一个小根堆来维护第 ...

  5. 【AGC009E】Eternal Average

    [AGC009E]Eternal Average 题面 洛谷 题解 神仙题.jpg 我们把操作看成一棵\(k\)叉树,其中每个节点有权值,所有叶子节点(共\(n+m\)个)就是\(0\)或\(1\). ...

  6. HTML5 - websocket的应用 之 简易聊天室

    需要知识点: 前端知识 jq操作dom nodejs socket.io 关于websocket api的知识点,见上篇章<HTML5-Websocket>. 聊天室思路/原理: A和B聊 ...

  7. Java 并发系列之二:java 并发机制的底层实现原理

    1. 处理器实现原子操作 2. volatile /** 补充: 主要作用:内存可见性,是变量在多个线程中可见,修饰变量,解决一写多读的问题. 轻量级的synchronized,不会造成阻塞.性能比s ...

  8. Golang(七)golang.org/x/time/rate 实现频率限制

    1. 源码阅读 整个包实现原理基于令牌桶算法:随时间以 1/r 个令牌的速度向容积为 b 个令牌的桶中添加令牌,有请求就取走令牌,若令牌不足则不执行请求或者等待 Allow 方法的调用链:lim.Al ...

  9. Salesforce LWC学习(八) Look Up组件实现

    本篇参考https://www.salesforcelwc.in/2019/10/lookup-in-lwc.html,感谢前人种树. 我们做lightning的时候经常会遇到Look up 或者MD ...

  10. MinGW g++.exe 编译 DLL 时,导出函数名带@的问题

    今天尝试用CodeBlocks写了一个简单的Dll,发现生成的 dll 文件导出的函数名后面都有一个 @xxx 从生成的 libDll2.def 中看到: EXPORTS DllMain@ @ Max ...