ホームページ  >  記事  >  バックエンド開発  >  Python でプログレス ライブラリを使用してプログレス バーを実装する方法

Python でプログレス ライブラリを使用してプログレス バーを実装する方法

王林
王林転載
2023-04-25 09:01:061810ブラウズ

Progress ライブラリのインストールと紹介

1. Progress ライブラリのインストール

Progress はサードパーティの Python ライブラリであり、ターミナルで pip コマンドを実行してインストールします。

pip install progress

2. プログレスプログレスバーの効果表示

公式サイトでは、以下のアニメーションのように、プログレスによって得られるさまざまなプログレスバーの効果を確認できます。

Python でプログレス ライブラリを使用してプログレス バーを実装する方法

progress は進行状況バーを実装します

# coding=utf-8
from progress.bar import Bar
import time

# 创建Bar类的实例
bar = Bar('MyProcess:', max=100)
# 循环处理某业务,调用bar对象的next()方法,循环次数等于max
for _ in range(100):
	# Do some work
    time.sleep(0.05)
    bar.next()
# 循环完成后调用finish()方法
bar.finish()

実行中の効果:

Python でプログレス ライブラリを使用してプログレス バーを実装する方法

進行状況ライブラリを使用して、プログレスバーの実装 非常に簡単です プログレスライブラリの bar.py から Bar クラスをインポートしてオブジェクトをインスタンス化し、ループで業務を処理して next() メソッドを呼び出します 処理が完了したら、finish を呼び出します() メソッドを使用してプログレスバーを終了します。

Bar クラスの主なパラメータは次のとおりです:

  • message: プログレス バーによって表示されるメッセージこのパラメータは、デフォルトで位置パラメータを使用して Bar に渡すことができます。

  • width: 進行状況バーの幅を変更します。デフォルトは 32 です。

  • max: 進行状況バーは、100 などのいくつかの等しい部分に分割されます。

  • サフィックス: 進行状況のパーセンテージを表示する形式。デフォルトは ‘%(index)d/%(max)d’ です。

  • fill: 進行状況バーを埋めるために使用するもの。デフォルトは ’#’ です。

  • empty_fill: アンロードされた進行状況バーを埋めるために使用するもの。デフォルトのスペースは ’ ’ です。

  • bar_prefix: 進行状況バーのプレフィックス、デフォルト|’。

  • bar_suffix: 進行状況バーのサフィックス、デフォルト’| ’。

  • color: プログレスバーの色、デフォルトはなし。

PyCharm プログレス バー表示の問題の解決策

ほとんどの Python プログラマは PyCharm を使用しています。PyCharm でプログレス バー コードを実行した後にプログレス バーの効果が表示されない場合は、次の手順を実行できます。以下の手順に従ってセットアップし、コードを再度実行します。

Step1. PyCharm の上の [実行] ボタンをクリックし、[構成の編集] をクリックして実行構成ページに入ります。

Python でプログレス ライブラリを使用してプログレス バーを実装する方法

Step2. [出力コンソールでターミナルをエミュレートする] オプションをオンにして、コードを再実行します。

Python でプログレス ライブラリを使用してプログレス バーを実装する方法

注意深い友人なら、PyCharm で上記の進行状況バーコードが完了した後、進行状況バーの下に奇妙な文字列があることに気づいたはずです: ‘?[?25h&rsquo ; 、スクリプト モード python progress_demo.py を使用してターミナルで同じコードを実行すると、そのような記号の文字列は表示されません。

この文字列はカーソルを表しており、PyCharm で実行するとコンソールにカーソルが出力されます。解決策は、Ctrl キーを押しながらインポートされた Bar クラス名をクリックし、ソース コード bar.py にジャンプしてから、Ctrl キーを押したまま Bar クラスによって継承された Progress クラスをクリックし、__init__.py を入力することです。このファイルの SHOW_CURSOR 変数は空の文字列に変更されます。

Python でプログレス ライブラリを使用してプログレス バーを実装する方法

#ソースコードを修正して再実行すると、カーソルが表示されなくなり、文字列も表示されなくなります。

Python でプログレス ライブラリを使用してプログレス バーを実装する方法

PyChram で進行状況バーを実行すると、他の表示の問題も発生する可能性があります。問題が発生した場合は、スクリプトで実行することをお勧めします。スクリプトの実行結果PyChram での実行は、コードをデバッグするためにのみ使用されます。

プログレス バー コードを記述する 2 つの他の方法

1. コンテキスト マネージャー: … として … コンテキスト マネージャーを使用してプログレス バーを記述する、プログレス バーがあります。終了時にfinish()メソッドを呼び出す必要はありません。

with Bar('Processing', max=20) as bar:
    for i in range(20):
        time.sleep(0.05)
        bar.next()

2. iter() メソッドを使用します: iter() メソッドを使用すると、next() メソッドを呼び出さずに反復子の作業を簡素化できます。

for i in Bar('Processing').iter(range(100)):
    time.sleep(0.05)

これら 2 つの実装メソッドの実行結果は、元の実装メソッドと同じです。

より多くの種類のプログレス バーを実装する

1. バー シリーズ

前の記事では、プログレス バーのソース コードをクリックすると、次のことができます。 Bar クラスの継承を参照してください Progress クラスから Infinite クラスを継承し、Progress クラスと Infinite クラスはプログレス バーの基本機能を実装します。

bar.py には、Bar クラスに加えて、ChargingBar、FillingSquaresBar、FillingCirclesBar、IncrementalBar、PixelBar、ShadyBar の 6 つのクラスがあり、Bar クラスのサブクラスまたは孫クラスであり、プログレス バーを継承しています。この関数は各クラスの変数 suffix、fill、empty_fill、bar_prefix、bar_suffix の値を変更するだけで、プログレス バーのスタイルを変更します。

使い方は非常に簡単で、これらのクラスをインポートし、上記のコードの Bar をこれらのクラス (FillingSquaresBar など) に置き換えるだけです。

from progress.bar import Bar, ChargingBar, FillingSquaresBar, FillingCirclesBar, IncrementalBar, PixelBar, ShadyBar
import time

bar = FillingSquaresBar('MyProcess:', max=100)
for i in range(100):
    time.sleep(0.05)
    bar.next()
bar.finish()

運用効果:

Python でプログレス ライブラリを使用してプログレス バーを実装する方法

还可以自己修改上面的参数,设置个性化的进度条,本文暂不扩展,以后有空可以专门写文章介绍。

2. Spinner 系列

progress 库的 spinner.py 中实现了 5 个类,Spinner, PieSpinner, MoonSpinner, LineSpinner, PixelSpinner。

from progress.spinner import Spinner, PieSpinner, MoonSpinner, LineSpinner, PixelSpinner

for i in Spinner('MySpinner:').iter(range(100)):
    time.sleep(0.01)

运行效果:

Python でプログレス ライブラリを使用してプログレス バーを実装する方法

3.Counter 系列

progress 库的 counter.py 中实现了 4 个类,Counter, Countdown, Stack, Pie。

from progress.counter import Counter, Countdown, Stack, Pie
import time

for i in Counter('Loading:').iter(range(100)):
    time.sleep(0.01)

运行效果:

Python でプログレス ライブラリを使用してプログレス バーを実装する方法

汇总

接下来将上面介绍的所有种类的进度条全部放到一起,代码如下:

from progress.bar import Bar, ChargingBar, FillingSquaresBar, \
    FillingCirclesBar, IncrementalBar, PixelBar, ShadyBar
from progress.spinner import Spinner, PieSpinner, MoonSpinner, LineSpinner, PixelSpinner
from progress.counter import Counter, Countdown, Stack, Pie
import time
import random

progess_list = [Bar, ChargingBar, FillingSquaresBar, FillingCirclesBar, IncrementalBar,
                PixelBar, ShadyBar, Spinner, PieSpinner, MoonSpinner, LineSpinner,
                PixelSpinner, Counter, Countdown, Stack, Pie]
for P in progess_list:
    for i in P(P.__name__ + ':').iter(range(100)):
        time.sleep(0.01)

bar = IncrementalBar('Random:', suffix='%(index)d%%')
for i in range(100):
    bar.goto(random.randint(0, 100))
    time.sleep(0.01)
bar.finish()

运行效果:

Python でプログレス ライブラリを使用してプログレス バーを実装する方法

运行代码后可以得出所有种类的进度条,与文章开头从官网截的图效果相同。

以上がPython でプログレス ライブラリを使用してプログレス バーを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。