让你的程序炫起来!少有人知道但超酷的 Python 进度条开源库 (2)

让你的程序炫起来!少有人知道但超酷的 Python 进度条开源库

from alive_progress import show_spinners show_spinners() # 查看内置 spinner 样式

让你的程序炫起来!少有人知道但超酷的 Python 进度条开源库

默认样式使用起来非常简单,例如我想使用 bubbles 这个 bar 和 message_scrolling 这个 spinner,直接传入对应名称即可:

from alive_progress import alive_bar import time # 直接传入对应名字即可 with alive_bar( 100, title="HelloGitHub", bar="bubbles", spinner="message_scrolling" ) as bar: for i in range(100): time.sleep(.1) bar()

让你的程序炫起来!少有人知道但超酷的 Python 进度条开源库

如果不知道 total 的数目,可以使用 unknown 参数(这时候将替换 bar 为 spinner):

from alive_progress import alive_bar import time with alive_bar( title="HelloGitHub", # 注意:这里 bar 被换成了unknow,内置样式名称与 spinner 的相同 unknown="stars", spinner="message_scrolling" ) as bar: for i in range(100): time.sleep(.1) bar()

让你的程序炫起来!少有人知道但超酷的 Python 进度条开源库

三、私人定制

或许比起直接使用内置模板你更喜欢自己定制的进度条,对此 alive-progress 也提供了对应方法。

3.1 定制 bar

使用 standard_bar_factory 方法可以快速定制 bar,bar 可以设置的参数有五个:

chars:正在执行单元的动画,按照进度依次显示。

borders:进度条边界,显示在左右两边。

background:未执行到单元显示的内容。

tip:执行单元的前导符号。

errors:出错时(进度未走全,超出 total 值等)时显示的字符。

例如我们想做一个如图所示的 bar:

让你的程序炫起来!少有人知道但超酷的 Python 进度条开源库

则可以这样来写:

from alive_progress import alive_bar, standard_bar_factory import time ##-------自定义 bar-------## my_bar = standard_bar_factory( # 以下参数均有默认值,不必一次全部修改 chars="123456789#", # 加载时根据进度依次显示,长度任意 borders="<>", # bar 两头的边界 background=".", # 未加载部分用 "." 填充 tip=">", # 指示进度方向的引导符号(分割 "#" 与 ".") errors="⚠❌" # 发生错误时显示的内容(未完成,溢出) ) ##-------自定义结束-------## ##--------动画演示-------## with alive_bar( 10, title="HelloGitHub", bar=my_bar, # 这里传入刚刚自定义的 bar spinner="message_scrolling", manual=True ) as bar: for i in range(50): time.sleep(.1) bar(i/100) bar(.5) time.sleep(2) bar(10) print("上溢") time.sleep(1) bar(1) print("100% 完成") time.sleep(1) bar(.1) print("未完成") 3.2 定制 spinner

对于 spinner,alive-progress 提供了更多种的动画定义方式:

frame_spinner_factory:将传入的字符串挨个输出:

from alive_progress import alive_bar, frame_spinner_factory import time my_spinner = my_spinner = frame_spinner_factory( r'-----', r'1----', r'-2---', r'--3--', r'---4-', r'----5' ) # 直接传入字符串 with alive_bar( title="HelloGitHub", spinner=my_spinner ) as bar: while True: bar() time.sleep(.1)

让你的程序炫起来!少有人知道但超酷的 Python 进度条开源库

可以看到字符串挨个循环输出。

scrolling_spinner_factory:将字符串滚动播出

from alive_progress import alive_bar, scrolling_spinner_factory import time my_spinner = scrolling_spinner_factory( chars="HelloGitHub", # 想要播放的字符串 length=15, # spinner 区域宽度 blank='.' # 空白部分填充字符 ) with alive_bar( title="HelloGitHub", spinner=my_spinner ) as bar: while True: bar() time.sleep(.1)

让你的程序炫起来!少有人知道但超酷的 Python 进度条开源库

bouncing_spinner_factory:将两个字符串交替滚动播出

from alive_progress import alive_bar, bouncing_spinner_factory import time my_spinner = bouncing_spinner_factory( right_chars="I love", # 从左边进入的字符串 length=15, # spinner 区域长度 left_chars="HelloGitHub", # 从右边进入的字符串 blank='.', # 空白区域填充字符 ) with alive_bar( title="HelloGitHub", spinner=my_spinner ) as bar: while True: bar() time.sleep(.1)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpzxyg.html