成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

讓你的程序炫起來!少有人知道但超酷的Python進度條開源庫

開發 后端
不知你是否有過這樣的經歷:你寫了一個程序,每次運行都會耗費很長時間。在等待程序運行期間你一次次地按下回車防止程序卡死。亦或者你的任務需要實時掌握程序運行進度但你根本不知道程序執行到了哪里...

[[392218]]

現在,alive-progress 來了,它是一個 Python 下的進度條庫,不僅使用方便而且支持多種炫酷顯示效果!讓我們先來看看示例效果:

 

讓你的程序炫起來!少有人知道但超酷的Python進度條開源庫

 

下面讓我們一起玩轉這個庫!

一、安裝

在 Python 下使用 pip 進行安裝:

 

  1. pip install alive-progress 

二、快速入門

2.1 直接使用

在循環中使用 alive-progress 是最常見的用法,腳本可以這樣寫:

 

  1. # 導入 alive-progress 庫 
  2. from alive_progress import alive_bar 
  3. import time 
  4.  
  5. # 使用 with 語句創建一個進度條 
  6. with alive_bar(100) as bar: # 給 alive_bar 傳入進度條總數目(這里是 100) 
  7.     for item in range(100): 
  8.         # 等待 1s 
  9.         time.sleep(.1) 
  10.         #更新進度條,進度 +1 
  11.         bar() 

請注意,如果無法正常顯示動畫則嘗試在 alive_bar 中加上 force_tty=True 參數。

運行以上代碼我們可以看到在終端中出現了一個還算華麗的動態進度條:

 

讓你的程序炫起來!少有人知道但超酷的Python進度條開源庫

 

需要注意的是 alive-progress 并不像 tqdm 等進度條庫一樣會自動更新,只有我們程序調用了 bar 才會讓進度條 +1

當然,我們也可以不給進度條傳入總數目這個參數,此時進度條將不顯示進度,并進入未定義模式:

 

讓你的程序炫起來!少有人知道但超酷的Python進度條開源庫

 

有時候我們想直接操縱顯示的位置,這時候可以設定 alive_bar 的 manual 參數為 True:

 

  1. from alive_progress import alive_bar 
  2. import time 
  3.  
  4. total = 100 
  5. with alive_bar(total, manual=Trueas bar: # total 可以不指定,這時候只有百分比 
  6.     bar(0.5) # 進度到 50% 
  7.     time.sleep(0.5) 
  8.     bar(0.1) # 進度到 10%  
  9.     time.sleep(0.5) 
  10.     bar(0.75) # 進度到 75% 
  11.     time.sleep(0.5) 
  12.     bar(1.0) # 進度到 100% 
  13.     time.sleep(0.5) 
  14.     bar(10) # 進度到 1000% 
  15.     for i in range(1,101): 
  16.         bar(i/100) # 設定進度為 i% 
  17.         time.sleep(0.05) 

 

 

讓你的程序炫起來!少有人知道但超酷的Python進度條開源庫

 

當然,在運行過程中我們也需要輸出一些提示信息,直接使用 print 可以在不破壞進度條的情況下輸出一行提示信息,text 方法則可以在進度條尾部添加后綴字符,而 title 參數則可以給進度條添加標題(前綴信息),具體使用方法及效果如下:

 

  1. from alive_progress import alive_bar 
  2. import time 
  3.  
  4. # 定義標題(前綴字符)為 HelloGitHub 
  5. with alive_bar(10, title="HelloGitHub"as bar: 
  6.     for i in range(10): 
  7.         time.sleep(1) 
  8.  
  9.         bar()   # 讓進度 +1 
  10.         bar.text("Doning Work #%d"%(i+1))   # 更新進度條后綴 
  11.  
  12.         print("Work #%d finished"%i)        # 輸出一行信息 

 

 

讓你的程序炫起來!少有人知道但超酷的Python進度條開源庫

 

2.2 添點花樣

看多了傳統的進度條樣式想換換花樣?沒問題,alive-progress 不僅內置了多種進度條樣式,還支持自定義格式。

進度條可以自定義的樣式分為兩種:bar 和 spinner,只需要在調用 alive_bar 的時候傳入對應的參數即可。

 

讓你的程序炫起來!少有人知道但超酷的Python進度條開源庫

 

以這個進度條為例,中間最長的是 bar,旁邊來回晃動的 www.HelloGitHub.com 是 spinner。

alive-progress 內置了多種 bar 和 spinner 樣式,只需要調用 show_bars 或者 show_spinners 即可快速預覽相應的樣式,例如:

 

  1. from alive_progress import show_bars 
  2.  
  3. show_bars() # 查看內置 bar 樣式 

 

 

 

 

  1. from alive_progress import show_spinners 
  2. show_spinners() # 查看內置 spinner 樣式 

 

 

讓你的程序炫起來!少有人知道但超酷的Python進度條開源庫

 

默認樣式使用起來非常簡單,例如我想使用 bubbles 這個 bar 和 message_scrolling 這個 spinner,直接傳入對應名稱即可:

 

  1. from alive_progress import alive_bar 
  2. import time 
  3.  
  4. # 直接傳入對應名字即可 
  5. with alive_bar( 
  6.             100, 
  7.             title="HelloGitHub",  
  8.             bar="bubbles", spinner="message_scrolling" 
  9.             ) as bar: 
  10.  
  11.     for i in range(100): 
  12.         time.sleep(.1) 
  13.         bar() 

 

 

 

如果不知道 total 的數目,可以使用 unknown 參數(這時候將替換 bar 為 spinner):

 

  1. from alive_progress import alive_bar 
  2. import time 
  3.  
  4. with alive_bar( 
  5.             title="HelloGitHub",  
  6.             # 注意:這里 bar 被換成了unknow,內置樣式名稱與 spinner 的相同 
  7.             unknown="stars", spinner="message_scrolling" 
  8.             ) as bar: 
  9.  
  10.     for i in range(100): 
  11.         time.sleep(.1) 
  12.         bar() 

 

 

讓你的程序炫起來!少有人知道但超酷的Python進度條開源庫

 

三、私人定制

或許比起直接使用內置模板你更喜歡自己定制的進度條,對此 alive-progress 也提供了對應方法。

3.1 定制 bar

使用 standard_bar_factory 方法可以快速定制 bar,bar 可以設置的參數有五個:

  • chars:正在執行單元的動畫,按照進度依次顯示。
  • borders:進度條邊界,顯示在左右兩邊。
  • background:未執行到單元顯示的內容。
  • tip:執行單元的前導符號。
  • errors:出錯時(進度未走全,超出 total 值等)時顯示的字符。

例如我們想做一個如圖所示的 bar:

 

 

則可以這樣來寫:

 

  1. from alive_progress import alive_bar, standard_bar_factory 
  2. import time 
  3.  
  4. ##-------自定義 bar-------## 
  5. my_bar = standard_bar_factory( # 以下參數均有默認值,不必一次全部修改 
  6.                             chars="123456789#", # 加載時根據進度依次顯示,長度任意 
  7.                             borders="<>",  # bar 兩頭的邊界 
  8.                             background=".",  # 未加載部分用 "." 填充 
  9.                             tip=">",   # 指示進度方向的引導符號(分割 "#" 與 "."
  10.                             errors="⚠❌" # 發生錯誤時顯示的內容(未完成,溢出)  
  11.                             ) 
  12. ##-------自定義結束-------## 
  13.  
  14. ##--------動畫演示-------## 
  15. with alive_bar( 
  16.             10, 
  17.             title="HelloGitHub",  
  18.             bar=my_bar, # 這里傳入剛剛自定義的 bar 
  19.       spinner="message_scrolling"
  20.             manual=True 
  21.             ) as bar: 
  22.  
  23.     for i in range(50): 
  24.         time.sleep(.1) 
  25.         bar(i/100) 
  26.     bar(.5) 
  27.     time.sleep(2) 
  28.     bar(10) 
  29.     print("上溢"
  30.     time.sleep(1) 
  31.     bar(1) 
  32.     print("100% 完成"
  33.     time.sleep(1) 
  34.     bar(.1) 
  35.     print("未完成"

 

3.2 定制 spinner

對于 spinner,alive-progress 提供了更多種的動畫定義方式:

frame_spinner_factory:將傳入的字符串挨個輸出:

 

  1. from alive_progress import alive_bar, frame_spinner_factory 
  2. import time 
  3.  
  4. my_spinner = my_spinner = frame_spinner_factory( 
  5.                                 r'-----'
  6.                                 r'1----'
  7.                                 r'-2---'
  8.                                 r'--3--'
  9.                                 r'---4-'
  10.                                 r'----5' 
  11.                                 ) # 直接傳入字符串 
  12.  
  13. with alive_bar( 
  14.             title="HelloGitHub"
  15.             spinner=my_spinner 
  16.             ) as bar: 
  17.  
  18.     while True
  19.         bar() 
  20.         time.sleep(.1) 

 

 

讓你的程序炫起來!少有人知道但超酷的Python進度條開源庫

 

可以看到字符串挨個循環輸出。

scrolling_spinner_factory:將字符串滾動播出

 

  1. from alive_progress import alive_bar, scrolling_spinner_factory 
  2. import time 
  3.  
  4. my_spinner = scrolling_spinner_factory( 
  5.                                     chars="HelloGitHub", # 想要播放的字符串 
  6.                                     length=15, # spinner 區域寬度 
  7.                                     blank='.' # 空白部分填充字符 
  8.                                     ) 
  9.  
  10. with alive_bar( 
  11.             title="HelloGitHub"
  12.             spinner=my_spinner 
  13.             ) as bar: 
  14.  
  15.     while True
  16.         bar() 
  17.         time.sleep(.1) 

 

 

 

bouncing_spinner_factory:將兩個字符串交替滾動播出

 

  1. from alive_progress import alive_bar, bouncing_spinner_factory 
  2. import time 
  3.  
  4. my_spinner = bouncing_spinner_factory( 
  5.                                     right_chars="I love", # 從左邊進入的字符串 
  6.                                     length=15, # spinner 區域長度 
  7.                                     left_chars="HelloGitHub", # 從右邊進入的字符串 
  8.                                     blank='.',  # 空白區域填充字符 
  9.                                     ) 
  10.  
  11. with alive_bar( 
  12.             title="HelloGitHub"
  13.             spinner=my_spinner 
  14.             ) as bar: 
  15.  
  16.     while True
  17.         bar() 
  18.         time.sleep(.1) 

 

 

讓你的程序炫起來!少有人知道但超酷的Python進度條開源庫

 

當然,也可以省略 left_chars 這個參數,其效果相當于 I love 將會像彈球一樣左右彈動。

unknown_bar_factory:將 spinner 轉換為能使用在未定義模式中的格式:

 

  1. from alive_progress import alive_bar, unknown_bar_factory, bouncing_spinner_factory 
  2. import time 
  3.  
  4. my_spinner = bouncing_spinner_factory("www.HelloGitHub.com",15,hiding=False
  5.  
  6. my_unknown_bar = unknown_bar_factory(my_spinner) # 傳入定義的 spinner 
  7. with alive_bar( 
  8.             title="HelloGitHub"
  9.             unknown=my_unknown_bar 
  10.             ) as bar: 
  11.  
  12.     while True
  13.         bar() 
  14.         time.sleep(.1) 

 

 

讓你的程序炫起來!少有人知道但超酷的Python進度條開源庫

 

四、結尾

到這里,相信你已經掌握了 alive_progress 的基本玩法,alive-progress 還提供了一些在不同場合所需的特殊功能,有興趣的朋友可以通過閱讀官方文檔或源代碼進行更加深入的了解。

 

責任編輯:華軒 來源: 今日頭條
相關推薦

2022-07-23 21:37:48

Python

2010-07-27 14:00:53

Flex ComboB

2012-06-20 11:19:04

jQuery

2011-05-24 15:29:05

程序CC++

2020-12-14 13:32:40

Python進度條參數

2019-03-19 09:00:14

Python 開發編程語言

2015-07-31 11:19:43

數字進度條源碼

2024-08-06 14:29:37

2024-07-04 11:25:34

2020-07-19 15:39:37

Python開發工具

2022-02-04 21:33:34

Ajaxjs網站

2015-01-12 12:13:03

Android進度條ProgressDia

2015-01-12 09:30:54

Android進度條ProgressDia

2013-03-12 10:35:06

CSS 3

2015-08-03 11:39:20

擬物化進度條

2024-12-02 09:37:51

2024-07-25 08:55:47

進度條水缸進度動畫效果

2022-06-27 08:01:55

動畫CSS前端

2023-12-27 13:45:00

Python進度條代碼

2018-06-04 22:27:47

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲综合色自拍一区 | 国产精品18久久久久久久 | 国产99热 | 久久99精品视频 | 一区二区三区回区在观看免费视频 | 九九免费观看视频 | 青娱乐av| 免费在线观看av网站 | 欧美精品一区二区三区在线播放 | 可以看黄的视频 | 国产精品久久久久无码av | 日韩福利 | 久久国产综合 | 91文字幕巨乱亚洲香蕉 | 天天操天天干天天爽 | 日韩1区| 亚洲成人av在线 | av网站在线播放 | 色在线视频网站 | 久久国产精品一区 | 99在线观看视频 | 日韩电影在线 | 亚洲成人日韩 | 在线看一区二区 | 天天操天天玩 | 亚洲国产在 | 日韩不卡一区二区三区 | 97超碰免费 | 美女国产精品 | 精品国产视频 | 黑人中文字幕一区二区三区 | 精品亚洲一区二区三区 | 久久av一区二区三区 | 伊人网伊人 | 久久99国产精一区二区三区 | 国产精品99久久久久久久久久久久 | 久久久av| 四虎永久在线精品免费一区二 | 国产ts人妖系列高潮 | 国产成人精品网站 | 91在线精品视频 |