- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Python在Console下显示文本进度条的方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
进度条实现原理 。
进度条和一般的print区别在哪里呢? 答案就是print会输出一个\n,也就是换行符,这样光标移动到了下一行行首,接着输出,之前已经通过stdout输出的东西依旧保留,而且保证我们在下面看到最新的输出结果。 进度条不然,我们必须再原地输出才能保证他是一个进度条,否则换行了怎么还叫进度条? 实现进度条最简单的办法就是,在输出完毕后,把光标移动到行首,继续在那里输出更长的进度条即可实现,新的更长的进度条把旧的短覆盖,就形成了动画效果.
在用Python处理耗时的任务时,往往希望能够了解到任务当前的处理进度,这个时候需要在任务中不断打印出任务的进度信息。一般我们是这样的:
def process_mission(): """ 任务处理方法 """ # 这里是任务处理过程 print('当前处理到第[%d]项' % count) # 这里是任务处理过程 。
这种方式会在窗口输出一堆类似下面这样的信息:
当前处理到第1项 当前处理到第2项 当前处理到第3项 当前处理到第4项 当前处理到第5项 .... 。
这种信息有可能非常非常的长,也有可能输出的时候非常非常的快,以至于根本就无法看清楚(输出非常快的时候).
这时候,我们期待这样的功能:
[================== ] 25.60% 。
但如果纯粹的使用 print 是无法达到效果的,会变成和前面一样,满屏都是这种杠杠.
如何正确显示进度条呢?
Python提供了一个模块,叫: progressbar ,当使用这个模块之后,你要显示进度的仅需如下:
1
2
3
4
5
6
7
8
9
10
|
import
progressbar
# 先定义一个进度条
# http://blog.useasp.net/
pbar
=
progressbar.ProgressBar(maxval
=
100
, \
widgets
=
[progressbar.Bar(
'='
,
'['
,
']'
),
' '
, \
progressbar.Percentage()])
for
i
in
xrange
(
100
):
# 更新进度条
pbar.update(i
+
1
)
pbar.finish()
|
# Ok,到此完结.
是不是很容易就完成进度条的显示?不过遗憾的是,这个python模块并不是默认的,而是需要安装:
pip install progressbar 。
如果没有安装 pip 可以 参考这里 .
对于只要一个简单进度条的人来说,安装个python包似乎有点动静太大,那么,自己动手写一个便是了.
下面是Mitchell自己写的一个类似的进度条,不用安装包,简单易用.
1
2
3
4
5
6
7
8
9
10
11
12
|
# 在使用本方法之前,请先做如下import
# from __future__ import division
# import math
# import sys
# ##blog.useasp.net##
def
progressbar(cur, total):
percent
=
'{:.2%}'
.
format
(cur
/
total)
sys.stdout.write(
'\r'
)
sys.stdout.write(
"[%-50s] %s"
%
(
'='
*
int
(math.floor(cur
*
50
/
total)),
percent))
sys.stdout.flush()
|
说明:
cur , total :一个是当前值,一个是总值。 cur 在任务的处理过程中会不断向 total 靠近,直到两者相等,任务结束 。
需要注意的是,这两个可能为整型,因此要引入 division .
在使用的时候,只需要调用 progressbar 即可在控制台输出进度条.
1
2
3
4
|
# 调用方式举例
progressbar(
2
,
100
)
progressbar(
3.9
,
10
)
progressbar(
3283
,
27379
)
|
到此,我们完成了一个会在控制台动态更新的进度条.
以上所述是小编给大家介绍的Python在Console下显示文本进度条的方法,希望对大家有所帮助.
最后此篇关于Python在Console下显示文本进度条的方法的文章就讲到这里了,如果你想了解更多关于Python在Console下显示文本进度条的方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
已经有几个关于捕获或重定向 console.log 的问题: redirect Javascript syntax errors and console.log to somewhere else C
console.log(String(console.log('Not undefined')) === 'undefined'); console.log(String(console.log('N
我知道这是一个新手错误,但我不知道如何修复它。 public static void main (String args[]){ Console kitty = System.console(); S
我正在使用 Visual Studio 2015。 我试图打印一些语句只是为了跟踪一个非常长时间运行的测试。当使用 VSTest.Console 和/Logger:trx 时,调试输出(无论我们使用
这个问题在这里已经有了答案: Accessing console and devtools of extension's background.js (8 个回答) 5年前关闭。 我的 Chrome
我在括号中收到此错误。 我想强调一个事实,这是我第二次打开 JS 文件。 正如我强调的那样,我还想强调一个事实,即我不知道 Eslint 和 node.js 是什么。 StackOverflow 和其
我按照文档中的描述安装了 Drupal Console Launcher: curl https://drupalconsole.com/installer -L -o drupal.phar mv
Console.WriteLine() 和有什么区别和Trace.WriteLine() ? 最佳答案 从“调试”的角度来看这些。 我们开始使用 Console.WriteLine() 进行调试 后来
我一直在尝试连接到 serial console of a Raspberry Pi 3 with Android Things使用USB to TTL cable从我的 Linux (Ubuntu)
namespace Pro { class ErrorLog { public ErrorLog(RenderWindow app) {
以下代码是一个众所周知的示例,用于显示调试版本和发布版本之间的区别: using System; using System.Threading; public static class Program
if (open_date) { open_date = get_date_from_string(open_date); window.console && cons
在 Xcode 中工作时,我通常只为控制台打开一个单独的窗口,以便我可以看到尽可能多的输出行。我今天刚刚更新到 Xcode 12,在更新之前,您可以将编辑器 Pane 和控制台 Pane 之间的分隔线
在 Google Play Console 上,在所有应用程序的第一页,它会显示已安装的受众和用户获取。 我知道已安装的受众是在他们的设备上安装我的应用程序的受众。但什么是用户获取?通常,用户获取的数
Qt Quick uses qDebug执行日志记录,其中标准 Javascript 日志记录方法映射到 Qt 日志类型 console.log() -> qDebug() console.deb
Qt Quick uses qDebug执行日志记录,其中标准 Javascript 日志记录方法映射到 Qt 日志类型 console.log() -> qDebug() console.deb
我有以下代码: bool loop = true; LongbowWorkerThread Worker = new LongbowWorkerThread(); Th
我遇到了这两个 API,用于在 C# 的简单控制台应用程序中读取用户的输入: System.Console.ReadLine() System.Console.In.ReadLine() 这是一个我试
我是编程和 js 的新手,我正在尝试学习 javascript 的关键。 var obj1 = { name: 'rawn', fn: function() { con
using System; namespace ConsoleApplication1 { class Program { static void Main(strin
我是一名优秀的程序员,十分优秀!