python写界面进度条程序_Python中如何写控制台进度条的整理
进度条和一般的print区别在哪里呢?
答案就是print会输出一个\n,也就是换行符,这样光标移动到了下一行行首,接着输出,之前已经通过stdout输出的东西依旧保留,而且保证我们在下面看到最新的输出结果。
进度条不然,我们必须再原地输出才能保证他是一个进度条,否则换行了怎么还叫进度条?
最简单的办法就是,再输出完毕后,把光标移动到行首,继续在那里输出更长的进度条即可实现,新的更长的进度条把旧的短覆盖,就形成了动画效果。
可以想到那个转义符了吧,那就是 \r。
转义符\r就可以把光标移动到行首而不换行,转义符\n就把光标移动到行首并且换行。
在python中,输出stdout(标准输出)可以使用sys.stdout.write
例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/env python
# -*- coding=utf-8 -*-
#Using GPL v2
#Author: ihipop@gmail.com
##2010-10-27 22:07
"""
Usage:
Just A Template
"""
from
__future__
import
division
import
sys
,
time
j
=
'#'
if
__name__
==
'__main__'
:
for
i
in
range
(
1
,
61
)
:
j
+
=
'#'
sys
.
stdout
.
write
(
str
(
int
(
(
i
/
60
)
*
100
)
)
+
'% ||'
+
j
+
'->'
+
"\r"
)
sys
.
stdout
.
flush
(
)
time
.
sleep
(
0.5
)
第二种思路是用转义符\b
转义符\b是退格键,也就是说把输出的光标往回退格子,这样就可以不用+=了,例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/env python
# -*- coding=utf-8 -*-
#Using GPL v2
#Author: ihipop@gmail.com
#2010-10-27 22:07
"""
Usage:
Just A Template
"""
from
__future__
import
division
import
sys
,
time
if
__name__
==
'__main__'
:
for
i
in
range
(
1
,
61
)
:
sys
.
stdout
.
write
(
'#'
+
'->'
+
"\b\b"
)
sys
.
stdout
.
flush
(
)
time
.
sleep
(
0.5
)
光标回退2格,写个#再回退,再写,达到增长的目的了
不过写这么多似乎是废话,在耳边常常听到一句话:那就是不要重复造轮子。实际上python有丰富发lib帮你实现这个东西,你完全可以把心思放在逻辑开发上而不用注意这些小细节
下面就是基本使用举例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/usr/bin/env python
# -*- coding=utf-8 -*-
#Using GPL v2
#Author: ihipop@gmail.com
#2010-10-27 22:53
"""
Usage:
Just A Template
"""
from
__future__
import
division
import
sys
,
time
from
progressbar
import
*
total
=
1000
#基本用法
progress
=
ProgressBar
(
)
for
i
in
progress
(
range
(
total
)
)
:
time
.
sleep
(
0.01
)
pbar
=
ProgressBar
(
)
.
start
(
)
for
i
in
range
(
1
,
1000
)
:
pbar
.
update
(
int
(
(
i
/
(
total
-
1
)
)
*
100
)
)
time
.
sleep
(
0.01
)
pbar
.
finish
(
)
#高级用法
widgets
=
[
'Progress: '
,
Percentage
(
)
,
' '
,
Bar
(
marker
=
RotatingMarker
(
'>-='
)
)
,
' '
,
ETA
(
)
,
' '
,
FileTransferSpeed
(
)
]
pbar
=
ProgressBar
(
widgets
=
widgets
,
maxval
=
10000000
)
.
start
(
)
for
i
in
range
(
1000000
)
:
# do something
pbar
.
update
(
10
*
i
+
1
)
time
.
sleep
(
0.0001
)
pbar
.
finish
(
)
官方示例下载,移步这里:
http://code.google.com/p/python-progressbar/source/browse/progressbar/examples.py
再发一个类:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/usr/bin/env python
# -*- coding=utf-8 -*-
#Using GPL v2
#Author: ihipop@gmail.com
#2010-10-30 13:59
"""
Usage:
Just A Template
"""
class
progressbarClass
:
def
__init__
(
self
,
finalcount
,
progresschar
=
None
)
:
import
sys
self
.
finalcount
=
finalcount
self
.
blockcount
=
0
#
# See if caller passed me a character to use on the
# progress bar (like "*"). If not use the block
# character that makes it look like a real progress
# bar.
#
if
not
progresschar
:
self
.
block
=
chr
(
178
)
else
:
self
.
block
=
progresschar
#
# Get pointer to sys.stdout so I can use the write/flush
# methods to display the progress bar.
#
self
.
f
=
sys
.
stdout
#
# If the final count is zero, don't start the progress gauge
#
if
not
self
.
finalcount
:
return
self
.
f
.
write
(
'\n------------------- % Progress -------------------\n'
)
return
def
progress
(
self
,
count
)
:
#
# Make sure I don't try to go off the end (e.g. >100%)
#
count
=
min
(
count
,
self
.
finalcount
)
#
# If finalcount is zero, I'm done
#
if
self
.
finalcount
:
percentcomplete
=
int
(
round
(
100
*
count
/
self
.
finalcount
)
)
if
percentcomplete
<
1
:
percentcomplete
=
1
else
:
percentcomplete
=
100
#print "percentcomplete=",percentcomplete
blockcount
=
int
(
percentcomplete
/
2
)
#print "blockcount=",blockcount
if
blockcount
>
self
.
blockcount
:
for
i
in
range
(
self
.
blockcount
,
blockcount
)
:
self
.
f
.
write
(
self
.
block
)
self
.
f
.
flush
(
)
if
percentcomplete
==
100
:
self
.
f
.
write
(
"\n"
)
self
.
blockcount
=
blockcount
return
if
__name__
==
"__main__"
:
from
time
import
sleep
pb
=
progressbarClass
(
8
,
"*"
)
count
=
0
while
count
<
9
:
count
+
=
1
pb
.
progress
(
count
)
sleep
(
0.2
)
Author Info :
Please Reserve This Link,Thanks!
python写界面进度条程序_Python中如何写控制台进度条的整理相关推荐
- python如何注释一段代码_Python 中如何写注释
在写 Python 代码的时候,一个很好的编码实践就是使得你的代码简洁,易懂.组织代码,设置变量,以及给函数有意义的名字,都是几个不错的方法. 另外一个提高代码可读性的方式就是使用注释.一个注释就是可 ...
- python 预测下一年数据 程序_python中神经网络预测时间序列数据
我是神经网络的初学者,尝试用python语言预测5个输入的温度值(输出).我使用python中的keras包来工作神经网络.在 此外,我使用了两种算法,即前向神经网络(回归)和递归神经网络(LSTM) ...
- Python基础_第3章_Python中的循环结构
Python基础_第3章_Python中的循环结构 文章目录 Python基础_第3章_Python中的循环结构 Python中的循环结构 一.回顾分支练习题 1.判断是否为一个合法三角形 2.求世界 ...
- Python基础_第5章_Python中的数据序列
Python基础_第5章_Python中的数据序列 文章目录 Python基础_第5章_Python中的数据序列 Python中的数据序列 一.字典--Python中的==查询==神器 1.为什么需要 ...
- 用python编写一个点餐程序_Python写一个自动点餐程序
原博文 2019-08-09 10:45 − # Python写一个自动点餐程序 ## 为什么要写这个 公司现在用meican作为点餐渠道,每天规定的时间是早7:00-9:40点餐,有时候我经常容易忘 ...
- python写一个类方法_python中如何写类
类的定义 Python中,定义类是通过class关键字,例如我们定义一个存储学生信息的类: class Student(object): pass class后面紧接着是类名,即Student,类名通 ...
- python写用用户名密码程序_python写用’户登录程序‘的过程
作业需求: 基础需求: 让用户输入用户名密码 认证成功后显示欢迎信息 输错三次后退出程序 升级需求: 可以支持多个用户登录 (提示,通过列表存多个账户信息) 用户3次认证失败后,退出程序,再次启动程序 ...
- python编译成手机可用程序_Python 程序打包成 exe 可执行文件
可执行文件:对于非码农用户或者一些小白用户,你让他装个 Python 同时还要折腾一堆依赖库,那简直是个灾难.对于此类用户,最简单的方式就是提供一个可执行文件,只需要把用法告诉他即可.比较麻烦的是需要 ...
- python运行mcmc为何老出错_python中mcmc方法的实现
MCMC方法在贝叶斯统计中运用很多,MIT发布的EMCEE是实现的比较好的.介绍页面在下面.源代码中examples里的代码可以帮助理解各种功能,特别是line.py 列出了最小二乘法,最大似然法和M ...
最新文章
- MongoDB极简教程
- Programming Entity Framework-dbContext 学习笔记第五章
- 你不知道的三种在for循环中使用setTimeout的方法
- 程序员应对浏览器同源策略的姿势
- HBase ACL管理 Hbase 权限管理
- 实战_02_Spring SpringMVC 整合Mybaits
- python爬取内容乱码_python爬取html中文乱码
- linux学习之路之使用脚本来复制二进制程序和所需的库文件
- 探索科学的奥秘之门Science,Cell, Nature
- selenium模拟登陆LinkedIn
- 彻底卸载anaconda教程
- 光伏窗性能研究(3)——单层光伏窗节能性能研究
- Python常用模块 之 base64模块
- 20200528 前端开发日报
- 外显子名词解释_生物信息学常用名词解释(四)
- uni的numberbox怎么用_uni-app购物车功能
- ADI Blackfin DSP处理器-BF533的开发详解59:DSP控制ADXL345三轴加速度传感器的应用2(含源码)
- 【网页版 GitHub】操作指南(搜索、下载等)
- 一起学Pandas系列基础篇---loc和iloc
- 爬取京东评论并生成词云