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 ...
随机推荐
- Leecode之双指针及二分查找
题目 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2. 说明: 返回的 ...
- eclipse 导入项目后,在工程图标上出现红叉,但是工程中的文件并没有提示错误的解决方法
进入项目包下的.settings目录,找到org.eclipse.wst.common.project.facet.core.xml文件,用记事本打开后才发现这句话有问题:<runtime na ...
- Docker入门笔记(Centos7)
centos7 wget https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo vim docker-c ...
- LOJ6115 汇合 树上分块
本题空间很小,那些O(nlogn)的树上lca算法在这里不顶用了,可以考虑树分块. 本题的树分块是基于深度的,即按深度每\(\sqrt n\)分一块,然后一块一块往上跳,一直跳到lca处. 对于这题, ...
- matplotlib 柱状图
222 # coding utf-8 # import matplotlib import numpy as np import matplotlib.pyplot as plt import mat ...
- React 获取真实Dom v8.6.2版本
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- PR代码提交规范
1.在提交pull request之前,先要把 master上面的合并到 这个分支上面,看看是不是有冲突,然后在提交pr
- websocket通信1009错误,
问题说明: springboot继承 WebSocketConfigurer实现websocket通信服务,服务器端报错,"The decoded text message was too ...
- spark 基本操作整理
关于spark 的详细操作请参照spark官网 scala 版本:2.11.8 1.添加spark maven依赖,如需访问hdfs,则添加hdfs依赖 groupId = org.apache.sp ...
- 内存泄漏(Memory Leak)
内存泄露检测工具Valgrind 内存泄露简介 回到顶部 什么是内存泄漏 内存泄漏(Memory Leak)是指程序中已动态分配的堆内存由于某种原因,程序未释放或无法释放,造成系统内存的浪费,导致 ...