Друкарня від WE.UA

Всіх вітаю! Чи цікавилися ви коли небудь як створювати прогрес бари прямо у консолі? Якщо ні, то дана стаття саме для вас! У цій невеличкій статті ми дізнаємося, яким чином можна сторювати прогрес бари за допомогою бібліотеки tqdm у Python.

Встановлення tqdm

Windows:

pip install tqdm

MacOS:

pip3 install tqdm

Linux:

pip install tqdm

Створення прогрес барів

Як приклад побудуємо просту програму з реєстрацією, де користувач повинен буде написати свій логін та пароль, щоб якби увійти у систему.

Ось такий простий код:

def registration():
    print("+===================+\n"
          "| Registration form |\n"
          "+===================+\n")

    login = input("Login: ")
    password = input("Password: ")


registration()

Тепер пропоную додати прогрес бар після того, як користувач введе логін та пароль. Для цього імпортуємо бібліотеку tqdm та вбудований модуль time:

import tqdm
import time

Далі сторюємо сам прогрес бар за допомогою функції tqdm():

    for i in tqdm.tqdm(range(500)):
        time.sleep(0.01)

По суті єдине, що ми зробили — це передали функції tqdm() функцію range() з кількістю ітерацій. Таким чином ми вже створили свій перший прогрес бар, але також у циклі варто додати час затримки, щоб ми встигли побачити як рухається наш прогрес бар.

Отже, ось повний код нашої програми:

import tqdm
import time


def registration():
    print("+===================+\n"
          "| Registration form |\n"
          "+===================+\n")

    login = input("Login: ")
    password = input("Password: ")

    for i in tqdm.tqdm(range(500)):
        time.sleep(0.01)

    print(f"Welcome, {login}! We're glad to see you!")


registration()

Таким чином, тепер після реєстрації програма буде робити вигляд, наче вона обробляє дані від користувача, а потім вітає його у системі.

Ось як виглядає результат програми:

+===================+
| Registration form |
+===================+

Login: sandman
Password: asdwer4
100%|██████████| 500/500 [00:07<00:00, 64.34it/s]
Welcome, sandman! We're glad to see you!

Звісно, тут я лиш додав вже готовий результат, але у вас прогрес бар буде рухатися і ви це побачите.

Параметри прогрес бара

У функції tqdm() насправді є безліч параметрів для надання прогрес барам додаткових можливостей. Декілька таких ми розглянемо у цій частині статті.

Параметр description

Завдяки параметру description ми можемо вказати текст, який буде видно біля прогрес бара. Таким чином ми якби можемо зазначити, що саме ми заватажуємо.

Приклад:

    for i in tqdm.tqdm(range(500), desc="Data processing"):
        time.sleep(0.01)
+===================+
| Registration form |
+===================+

Login: sandman
Password: asdwer4
Data processing: 100%|██████████| 500/500 [00:07<00:00, 64.47it/s]
Welcome, sandman! We're glad to see you!

Отже, бачимо напис “Data processing“.

Параметр total

Параметр total надає змогу вказати очікувану кількість ітерацій у прогрес барі. Напис 500/500 у рядку прогрес бара якраз-таки показує, скільки ітерацій пройшов прогрес бар та ту саму очікувану кількість ітерацій.

Ось як це працює:

    for i in tqdm.tqdm(range(500), total=1000):
        time.sleep(0.01)
+===================+
| Registration form |
+===================+

Login: sandman
Password: asdwer4
 50%|█████     | 500/1000 [00:07<00:07, 64.42it/s]
Welcome, sandman! We're glad to see you!

У даному випадку ми вказали у якості очікуваної кількості ітерацій 1000, але у функції range() кількість ітерацій 500, тому прогрес бар зупинився на 50 відсотках. Тобто за треба розрізняти фактичну кількість ітерацій (500) та очікувану. Так і виходить, що у рядку прогрес бара ми отримали значення 500/1000.

Параметр leave

Параметр leave дозволяє прогрес бару моментально зникнути з консолі, коли він завершив повну кількість ітерацій, що були зазначені у range(). Він приймає тільки булеві значення True та False, причому значення True задано за замовчуванням. Тому, якщо ми задамо цьому параметру значення False, тоді при проходженні повної кількості ітерацій прогрес бар зникне з консолі.

Ось приклад роботи параметра:

    for i in tqdm.tqdm(range(500), leave=False):
        time.sleep(0.01)
+===================+
| Registration form |
+===================+

Login: sandman
Password: asdwer4
Welcome, sandman! We're glad to see you!

Як бачимо, прогрес бар дійсно зник з консолі. Якщо ви запустите параметр leave зі значенням True, то прогрес бар залишиться.

Параметр unit

Параметр unit дозволяє вказати конкретну одиницю вимірювання з якою працює наш прогрес бар. Відображатися нова одиниця вимірювання буде у частині рядка з прогрес баром — 64.34it/s.

Ось приклад:

    for i in tqdm.tqdm(range(500), unit="MB"):
        time.sleep(0.01)
+===================+
| Registration form |
+===================+

Login: sandman
Password: asdwer4
100%|██████████| 500/500 [00:07<00:00, 64.27MB/s]
Welcome, sandman! We're glad to see you!

Можемо спостерігати, що тепер одиниця вимірювання у нас саме мегабайти — 64.27MB/s.

Параметр colour

За допомогою параметра colour ми маємо можливість вказати колір, яким прогрес бар буде заповнюватися при проходженні ітерацій.

Ось як це виглядає:

    for i in tqdm.tqdm(range(500), colour="yellow"):
        time.sleep(0.01)
Параметр colour функції tqdm()

Також крім назви кольорів, ви можете записувати їхній хеш-код.

Висновок

У рамках сьогоднішньої статті ми дізналися як створювати прорес бари за допомогою бібліотеки tqdm. Також ми ознайомилися із декількома параметрами функції tqdm() та впевнилися, що tqdm є простим інструментом для створення прогрес барів із особливостями на різний смак.

Статті про вітчизняний бізнес та цікавих людей:

  • Вітаємо з Різдвом Христовим!

    Друкарня та платформа WE.UA вітають всіх наших читачів та авторів зі світлим святом Різдва! Зичимо всім українцям довгожданого миру, міцного здоровʼя, злагоди, родинного затишку та втілення всього доброго і прекрасного, чого вам побажали колядники!

    Теми цього довгочиту:

    Різдво
  • Каблучки – прикраси, які варто купувати

    Ювелірні вироби – це не тільки спосіб витратити гроші, але і зробити вигідні інвестиції. Бо вартість ювелірних виробів з кожним роком тільки зростає. Тому купуючи стильні прикраси, ви вигідно вкладаєте кошти.

    Теми цього довгочиту:

    Як Вибрати Каблучку
  • П'ять помилок у виборі домашнього текстилю, які псують комфорт сну

    Навіть ідеальний матрац не компенсує дискомфорт, якщо текстиль підібрано неправильно. Постільна білизна безпосередньо впливає на терморегуляцію, стан шкіри та глибину сну. Більшість проблем виникає не через низьку якість виробів, а через вибір матеріалів та подальшу експлуатацію

    Теми цього довгочиту:

    Домашній Текстиль
  • Як знайти житло в Києві

    Переїжджаєте до Києва і шукаєте житло? Дізнайтеся, як орендувати чи купити квартиру, перевірити власника та знайти варіанти, про які зазвичай не говорять.

    Теми цього довгочиту:

    Агентство Нерухомості
  • Як заохотити дитину до читання?

    Як залучити до читання сучасну молодь - поради та факти. Користь читання для дітей - основні переваги. Розвиток дітей - це наше майбутнє.

    Теми цього довгочиту:

    Читання
Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Mystique Lord
Mystique Lord@nocturnal_reader

Нічний читач

413Прочитань
21Автори
11Читачі
Підтримати
На Друкарні з 14 липня

Більше від автора

  • Добуток Кронекера у Python

    Всіх вітаю! У сьогоднішній статті ми поговоримо про те, як реалізувати добуток Кронекера у Python завдяки бібліотеці numpy. У рамках цієї статті ми розглянемо як використовувати функцію kron() та у чому суть добутку Кронекера.

    Теми цього довгочиту:

    Програмування
  • Перетворення формул у Python на LaTeX формат

    Всіх вітаю! У цій статті ми розглянемо можливість перетворення формул у Python на LaTeX формат за допомогою бібліотеки latexify-py. Також ми перейдемо до середовищ розробки Google Colab та Jupyter Notebook для повноціннох роботи з цією бібліотекою.

    Теми цього довгочиту:

    Програмування
  • Гарне форматування з pprint

    Всіх вітаю! Сьогодні ми поговоримо про те, як зробити вивід програми гарним та зручним завдяки бібліотеці pprint у Python. Крім цього ми розберемо кожний параметр функції pprint() та подивомося на нього у дії.

    Теми цього довгочиту:

    Програмування

Це також може зацікавити:

Коментарі (0)

Підтримайте автора першим.
Напишіть коментар!

Це також може зацікавити: