Как я могу не требовать установки tqdm? - PullRequest
3 голосов
/ 09 июля 2019

Я хотел бы использовать tqdm в своем скрипте, но не требовать, чтобы другие использовали его, если они не установили его.

Я нашел это:

try:
    import tqdm
except ImportError:
    tqdm = None

Но я не уверен, как использовать tqdm==None с этим:

with tqdm.tqdm(total=totalSize) as pbar:

Где totalSize - размер файла (или сумма размеров файлов при циклическом перемещении по нескольким файлам).

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Обычно я делаю это, добавляя следующую прокладку:

try:
    from tqdm import tqdm
except ImportError:
    def tqdm(iterator, *args, **kwargs):
        return iterator

Теперь вы всегда можете просто использовать tqdm, не беспокоясь о том, существует он или нет, поскольку запасной вариант пройдет черезто, что вы повторяете, игнорируя все параметры, связанные с tqdm.

for item in tqdm(items):
    action(item)

По общему признанию, ваше использование (используя with) не совместимо с этим подходом - но я оставлю это здесь для людей, использующихэто в цикле, как я обычно использую.

0 голосов
/ 09 июля 2019

Меньше pythonic и clunkier, но одно решение состоит в том, чтобы просто избегать использования tqdm с with следующим образом.

try:
    import tqdm
except ImportError:
    tqdm = None

if tqdm is not None:
    pbar = tqdm.tqdm(total=10)

for _ in range(10):
    if tqdm is not None:
        pbar.update()

if tqdm is not None:
    pbar.close()
...