1. Progress 라이브러리 설치
Progress는 타사 Python 라이브러리입니다. 설치하려면 터미널에서 pip 명령을 실행하세요.
pip install progress
2.진행률 진행률 표시줄 효과 표시
공식 웹사이트에서는 다음 애니메이션과 같이 진행률이 달성할 수 있는 다양한 진행률 표시줄 효과를 확인할 수 있습니다.
# 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()
실행 효과:
진행률 라이브러리의 bar.py에서 Bar 클래스를 가져오고 인스턴스화하는 것은 매우 간단합니다. 객체를 생성한 후 루프 내에서 비즈니스를 처리합니다. 그리고 next() 메서드를 호출하고, 처리가 완료된 후 Finish() 메서드를 호출하여 진행률 표시줄을 종료합니다.
Bar 클래스의 주요 매개변수는 다음과 같습니다:
message: 진행률 표시줄에 표시되는 메시지. 이 매개변수는 기본적으로 위치 매개변수를 사용하여 Bar에 전달될 수 있습니다.
width: 진행률 표시줄의 너비를 수정합니다. 기본값은 32입니다.
max: 진행률 표시줄이 100과 같이 여러 개의 동일한 부분으로 나뉩니다.
접미사: 진행률 표시 형식이며 기본값은 ‘%(index)d/%(max)d’입니다.
fill: 진행률 표시줄을 채우는 데 사용할 항목, 기본값은’#’입니다.
empty_fill: 언로드된 진행률 표시줄을 채우는 데 사용할 항목, 기본 공간은 ’입니다.
bar_prefix: 진행률 표시줄 접두사, 기본값’.
bar_suffix: 진행률 표시줄 접미사, 기본값 ’.
color: 진행률 표시줄의 색상, 기본값은 None입니다.
대부분의 Python 프로그래머는 PyCharm을 사용합니다. PyCharm에서 진행률 바코드를 실행한 후 진행률 표시줄 효과가 표시되지 않으면 아래 단계에 따라 설정한 후 코드를 실행할 수 있습니다. 다시.
Step1. PyCharm 위의 실행 버튼을 클릭한 다음 구성 편집을 클릭하여 실행 구성 페이지로 들어갑니다.
Step2. 출력 콘솔에서 터미널 에뮬레이트 옵션을 확인하고 코드를 다시 실행하세요.
주의 깊은 친구들은 위의 진행률 바코드가 PyCharm에서 실행된 후 진행률 표시줄 아래에 ‘?[?25h’라는 이상한 문자 문자열이 있다는 것을 알아차렸을 것입니다. 터미널에서 python Progress_demo 스크립트를 사용하세요. .py는 이 기호 문자열 없이 동일한 코드를 실행합니다.
이 문자열은 커서를 나타냅니다. PyCharm을 실행한 후 커서가 콘솔에 출력됩니다. 해결 방법은 Ctrl 키를 누른 채 가져온 Bar 클래스 이름을 클릭하고 소스 코드 bar.py로 이동한 다음 Ctrl 키를 누른 채 Bar 클래스에서 상속한 Progress 클래스를 클릭하고 __init__.py를 입력하는 것입니다. 진행 라이브러리 파일을 변경하고 이 파일의 SHOW_CURSOR 변수가 빈 문자열로 변경됩니다.
소스 코드를 수정한 후 다시 실행하면 커서가 표시되지 않고, 문자열이 표시되지 않습니다.
PyChram에서 진행률 표시줄을 실행할 때 다른 표시 문제가 발생할 수도 있습니다. 문제가 발생하면 스크립트로 실행하는 것이 좋습니다. PyChram에서 실행한 결과는 디버그에만 사용됩니다. 코드.
1. 컨텍스트 관리자: 진행률 표시줄 다음에 …을 컨텍스트 관리자로 사용하면 완료() 메서드를 호출할 필요가 없습니다. 완성 됐습니다.
with Bar('Processing', max=20) as bar: for i in range(20): time.sleep(0.05) bar.next()
2. iter() 메서드 사용: iter() 메서드를 사용하면 iterator 작업이 단순화되고 next() 메서드를 호출할 필요가 없습니다.
for i in Bar('Processing').iter(range(100)): time.sleep(0.05)
이 두 가지 구현 방법의 실행 결과는 원래 구현 방법과 동일합니다.
1. Bar 시리즈
이전 글에서 Progress의 소스 코드를 클릭하면 Bar 클래스가 Progress 클래스를 상속하는 것을 볼 수 있습니다. Infinite 클래스, Progress 클래스, Infinite 클래스에서 진행률 표시줄의 기본 기능을 구현했습니다.
bar.py에는 Bar 클래스 외에도 6개의 클래스(ChargingBar, FillingSquaresBar, FillingCirclesBar, IncrementalBar, PixelBar 및 ShadyBar)가 있습니다. 이들은 각각 Bar 클래스의 하위 클래스이거나 손자입니다. 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()
작동 효과:
还可以自己修改上面的参数,设置个性化的进度条,本文暂不扩展,以后有空可以专门写文章介绍。
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)
运行效果:
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)
运行效果:
接下来将上面介绍的所有种类的进度条全部放到一起,代码如下:
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에서 진행 라이브러리를 사용하여 진행률 표시줄을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!