在处理程序打进度条时,希望不换行显示进度,可以使用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. Leecode之双指针及二分查找

    题目 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2. 说明: 返回的 ...

  2. eclipse 导入项目后,在工程图标上出现红叉,但是工程中的文件并没有提示错误的解决方法

    进入项目包下的.settings目录,找到org.eclipse.wst.common.project.facet.core.xml文件,用记事本打开后才发现这句话有问题:<runtime na ...

  3. Docker入门笔记(Centos7)

    centos7 wget https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo vim docker-c ...

  4. LOJ6115 汇合 树上分块

    本题空间很小,那些O(nlogn)的树上lca算法在这里不顶用了,可以考虑树分块. 本题的树分块是基于深度的,即按深度每\(\sqrt n\)分一块,然后一块一块往上跳,一直跳到lca处. 对于这题, ...

  5. matplotlib 柱状图

    222 # coding utf-8 # import matplotlib import numpy as np import matplotlib.pyplot as plt import mat ...

  6. React 获取真实Dom v8.6.2版本

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. PR代码提交规范

    1.在提交pull request之前,先要把 master上面的合并到 这个分支上面,看看是不是有冲突,然后在提交pr

  8. websocket通信1009错误,

    问题说明: springboot继承 WebSocketConfigurer实现websocket通信服务,服务器端报错,"The decoded text message was too ...

  9. spark 基本操作整理

    关于spark 的详细操作请参照spark官网 scala 版本:2.11.8 1.添加spark maven依赖,如需访问hdfs,则添加hdfs依赖 groupId = org.apache.sp ...

  10. 内存泄漏(Memory Leak)

    内存泄露检测工具Valgrind   内存泄露简介 回到顶部 什么是内存泄漏 内存泄漏(Memory Leak)是指程序中已动态分配的堆内存由于某种原因,程序未释放或无法释放,造成系统内存的浪费,导致 ...