日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python如何在控制台显示进度条

發布時間:2025/3/20 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python如何在控制台显示进度条 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們在寫一些python程序時,如果程序運行時間較長,我們希望能夠有一個進度條來動態的展示程序運行進度。

首先能想到的做法是用print將執行到第幾步打印出來,但這樣顯然不是我們想要的進度條,顯示進度占用了很多行,原因是print在末尾默認加上了”\n”換行符。詳見《你應該知道的print》。

我們對進度條的需求:一是進度信息在一行中顯示;二是每次都能夠動態擦除一行中上一次的內容。那么很自然的想到print有沒有相應的轉義符,還真有這么一個,”\r”。

import time N = 1000 for i in range(N):print("進度:{0}%".format(round((i + 1) * 100 / N)), end="\r")time.sleep(0.01)

輸出格式:
100%

進度顯示的問題解決了,有時候我們需要有一些時間方面的顯示;例如已經耗費了多長時間,預計還剩下多少時間等。

import time N = 1000 st = time.clock() for i in range(N):p = round((i + 1) * 100 / N)duration = round(time.clock() - st, 2)remaining = round(duration * 100 / (0.01 + p) - duration, 2)print("進度:{0}%,已耗時:{1}s,預計剩余時間:{2}s".format(p, duration, remaining), end="\r")time.sleep(0.01)

輸出格式:進度:100%,已耗時:10s,預計剩余時間:10s

上面代碼中計算remaining時p加上了0.01,是為了避免除0問題。

至此,控制臺進度條可以工作了,但代碼在不同地方使用時會比較冗余,理解了原理,可以封裝成一個庫。

實際上早就有人已經做好這個工作了,而且功能更加強大豐富。這里推薦progressbar,下載地址為https://pypi.python.org/pypi/progressbar2

  • 簡單用法1
import time import progressbar p = progressbar.ProgressBar() N = 1000 for i in p(range(N)):time.sleep(0.01)
  • 簡單用法2
import time import progressbar p = progressbar.ProgressBar() N = 1000 p.start(N) for i in range(N):time.sleep(0.01)p.update(i+1) p.finish()

兩種簡單用法的輸出格式都是:
100% (1000 of 1000) |#####################| Elapsed Time: 0:00:10 Time: 0:00:10
包含了百分百進度,數量進度,#號前進條,耗費時間,剩余時間。

  • 高級點的用法(自己配置輸出格式)
import time import progressbar bar = progressbar.ProgressBar(widgets=[' [', progressbar.Timer(), '] ',progressbar.Percentage(),' (', progressbar.ETA(), ') ', ]) for i in bar(range(1000)):time.sleep(0.01)

輸出格式:
[Elapsed Time: 0:00:10] 100% (Time: 0:00:10)

主要方式有如下幾種,可自由搭配:

'Timer', # 計時器 'ETA', # 預計剩余時間 'AbsoluteETA', # 預計結束的絕對時間,耗時很長時使用較方便 'Percentage', # 百分比進度,30% 'SimpleProgress', # 計數進度,300/1000 'Counter', # 單純計數 'Bar' # “#”號進度條

例如:

import time import progressbar bar = progressbar.ProgressBar(widgets=[progressbar.Percentage(),' (', progressbar.SimpleProgress(), ') ',' (', progressbar.AbsoluteETA(), ') ',]) for i in bar(range(1000)):time.sleep(0.01)

輸出示例:
54% ( 545 of 1000) (Estimated finish time: 2016-11-06 19:26:15)

總結

以上是生活随笔為你收集整理的Python如何在控制台显示进度条的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。