zoukankan      html  css  js  c++  java
  • 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来进行刷新。为了不换行不叠加的显示前文的信息,我们可以利用 将光标移到行首,然后将前面的输出覆盖即可显示新的内容:

      for i in range(10):

      sys.stdout.write(str(i)+' ')

      sys.stdout.flush()

      time.sleep(0.5)

      # 将依次输出0~9十个数字

      >>> 9

      # 我们可以输出对应的百分数进度

      for i in range(10):

      sys.stdout.write(str(i+1/1*10)+'% ')

      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 + ' ')

      sys.stdout.flush()

      time.sleep(0.5)郑州妇科医院哪家好 http://www.zzkedayy.com/

      # 可以直接copy上面的代码就可以输出下面的进度条样式,在同一行中刷新百分数,延长进度符号

      >>> 100%>>>>>>>>>

      除了使用 外,还可以使用退格符号在进度条后进行刷新:

      for i in range(10):

      sys.stdout.write('*->'+ '') #为了不断加长中间的*,需要先将->删除再写入

      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 + ' ')

      sys.stdout.flush()

      time.sleep(0.5)

      # 刷新百分数和逐渐增长的进度条:

      >>> 100%*********->

  • 相关阅读:
    在基础数据类型和在对象中 使用 == 与equals的差别
    对Java中静态代理和动态代理的简单理解
    MyBatis中sqlSession的创建及执行流程
    Spring相关概念
    AOP相关
    IOC容器和Bean的配置
    如何将本地项目上传到GitHub进行托管
    稀疏数组
    Java集合回忆
    JSTL标签库
  • 原文地址:https://www.cnblogs.com/djw12333/p/11982439.html
Copyright © 2011-2022 走看看