日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
讓你的程序炫起來!少有人知道但超酷的Python進度條開源庫

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

成都創(chuàng)新互聯(lián)專注于安陽網站建設服務及定制,我們擁有豐富的企業(yè)做網站經驗。 熱誠為您提供安陽營銷型網站建設,安陽網站制作、安陽網頁設計、安陽網站官網定制、微信小程序服務,打造安陽網絡公司原創(chuàng)品牌,更為您提供安陽網站排名全網營銷落地服務。

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

一、安裝

在 Python 下使用 pip 進行安裝:

 
 
 
  1. pip install alive-progress 

二、快速入門

2.1 直接使用

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

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

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

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

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

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

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

 
 
 
  1. from alive_progress import alive_bar 
  2. import time 
  3.  
  4. total = 100 
  5. with alive_bar(total, manual=True) as 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) 

 

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

 
 
 
  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)        # 輸出一行信息 

 

2.2 添點花樣

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

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

以這個進度條為例,中間最長的是 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 樣式 

 

默認樣式使用起來非常簡單,例如我想使用 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 的數(shù)目,可以使用 unknown 參數(shù)(這時候將替換 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() 

 

三、私人定制

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

3.1 定制 bar

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

  • chars:正在執(zhí)行單元的動畫,按照進度依次顯示。
  • borders:進度條邊界,顯示在左右兩邊。
  • background:未執(zhí)行到單元顯示的內容。
  • tip:執(zhí)行單元的前導符號。
  • 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( # 以下參數(shù)均有默認值,不必一次全部修改 
  6.                             chars="123456789#", # 加載時根據(jù)進度依次顯示,長度任意 
  7.                             borders="<>",  # bar 兩頭的邊界 
  8.                             background=".",  # 未加載部分用 "." 填充 
  9.                             tip=">",   # 指示進度方向的引導符號(分割 "#" 與 ".") 
  10.                             errors="" # 發(fā)生錯誤時顯示的內容(未完成,溢出)  
  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) 

 

可以看到字符串挨個循環(huán)輸出。

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 區(qū)域寬度 
  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 區(qū)域長度 
  7.                                     left_chars="HelloGitHub", # 從右邊進入的字符串 
  8.                                     blank='.',  # 空白區(qū)域填充字符 
  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) 

 

當然,也可以省略 left_chars 這個參數(shù),其效果相當于 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) 

 

四、結尾

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


名稱欄目:讓你的程序炫起來!少有人知道但超酷的Python進度條開源庫
文章地址:http://m.5511xx.com/article/dpddeoh.html