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)郑州妇科医院哪家好 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输出不换行的更多相关文章
- python之sys.stdout、sys.stdin以及设置打印到日志文件等
转自:https://www.cnblogs.com/BigFishFly/p/6622784.html python之sys.stdout.sys.stdin 转自:http://www.cnblo ...
- python中如何使输出不换行
1.在python 2.x版本中,使用“,”(不含双引号)可使输出不换行,例如 2.python 3.x版本输出不换行格式如下 print(x, end="") end=&q ...
- Python 为什么sys.stdout.write 输出时后面总跟一个数字
sys.stdout 是标准输出文件.write就是往这个文件写数据. 合起来就是打印数据到标准输出 因为-在交互模式下会输出函数返回值,而write会返回输出的字符数量.在命令行里不会显示
- python 中sys.stdout.write 和 print >> sys.stdout的区别(转)
下面应该可以解你的惑了: print >> sys.stdout的形式就是print的一种默认输出格式,等于print "%VALUE%" 看下面的代码的英文注释,是p ...
- Python 标准输出 sys.stdout 重定向(转)
add by zhj: 其实很少使用sys.stdout,之前django的manage.py命令的源码中使用了sys.stdout和sys.stderr,所以专门查了一下 这两个命令与print的区 ...
- python之sys.stdout、sys.stdin
转自:http://www.cnblogs.com/turtle-fly/p/3280519.html 本文环境:Python 2.7 使用 print obj 而非 print(obj) sys. ...
- Python 标准输出 sys.stdout 重定向
本文环境:Python 2.7 使用 print obj 而非 print(obj) 一些背景 sys.stdout 与 print 当我们在 Python 中打印对象调用 print obj 时候, ...
- python中sys.stdout、sys.stdin
如果需要更好的控制输出,而print不能满足需求,sys.stdout,sys.stdin,sys.stderr就是你需要的. 1. sys.stdout与print: 在python中调用print ...
- python(5)- sys.stdout()实现进度条
1. 使用\r , 让其始终在行首输出,实现进度条 import sys, time ''' 使用\r 来实现进度条的效果,\r 是光标移到行首但不换行. 假设文件大小为60,一下下载1, 下载到60 ...
随机推荐
- MySQL 官方测试库
MySQL 官方测试库 github 地址 https://github.com/datacharmer/test_db MySQL 文档地址 https://dev.mysql.com/doc/em ...
- windows 下批量删除git 分支
删除筛选出来的分支,比如fixed git branch -D @(git branch | select-string "fixed" | Foreach {$_.Line.T ...
- 研究下vc++的abort函数
最近在调试几个问题时,发现跟abort函数有关,以前只是简单使用,现在却发现不简单,就多留意了下. 简介 abort中止当前进程并返回错误代码.异常终止一个进程.中止当前进程,返回一个错误代码.错误代 ...
- monkey--介绍
前戏 monkey程序是android系统自带的,其启动脚本是位于android系统的/system/bin目录的monkey文件,其jar包是位于android系统的/system/framewor ...
- 网络协议 13 - HTTPS 协议
之前说了 HTTP 协议的各种问题,但是它还是陪伴着互联网.陪伴着我们走过了将近二十年的风风雨雨.现在有很多新的协议尝试去取代它,来解决性能.效率等问题,但它还还能靠着“多年的情分”活的滋润.然而,近 ...
- win10 将任意文件固定到开始屏幕(最佳办法)
1.情景展示 以.bat文件文件为例,想将其固定到开始屏幕上,但是选中-->右键,却没有固定到开始屏幕选项,如何将其固定到开始屏幕上呢? 2.解决方案 选中你要固定到开始屏幕上的文件--&g ...
- 【06月18日】A股滚动市净率PB历史新低排名
2010年01月01日 到 2019年06月18日 之间,滚动市净率历史新低排名. 上市三年以上的公司,2019年06月18日市净率在30以下的公司. 来源:A股滚动市净率(PB)历史新低排名. 1 ...
- SpringBoot 应用篇之从 0 到 1 实现一个自定义 Bean 注册器
191213-SpringBoot 应用篇之从 0 到 1 实现一个自定义 Bean 注册器 我们知道在 spring 中可以通过@Component,@Service, @Repository 装饰 ...
- Spring(或者SpringBoot)整合Spring-Session实现共享session
传统Spring 先引入依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http: ...
- 图论 --- 骑士周游问题,DFS
A Knight's Journey Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 28630 Accepted: ...