如何不要求安装tqdm?

时间:2019-07-08 23:09:59

标签: python tqdm

我想在脚本中使用tqdm,但如果其他人尚未安装,则不要求其他人使用它。

我找到了:

try:
    import tqdm
except ImportError:
    tqdm = None

但是我不确定如何将tqdm==None用于此:

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

totalSize是文件大小(或循环多个文件时文件大小的总和)。

3 个答案:

答案 0 :(得分:0)

我通常的做法是添加以下垫片:

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

现在,您可以随时使用tqdm,而不必担心它是否存在,因为回退将遍历您正在迭代的事物,而忽略所有与tqdm相关的选项。

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

诚然,您的用法(使用with)与该方法不兼容-但我会将其留给像以前通常使用的那样在for循环中使用的人。

答案 1 :(得分:0)

在tqdm的documentation和我的try / except逻辑的帮助下,我可以正常工作:

try:
    import tqdm
except ImportError:
    tqdm = None

if (tqdm == None):
    pbar = None
else:
    pbar = tqdm.tqdm(total=totalSize)

#... inside the loop processing my file[s]...
if (pbar):
    pbar.update(len(line))

答案 2 :(得分:-1)

Python少了又笨拙,但是一种解决方案是避免使用带有with的tqdm,如下所示。

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()