如何不需要安装tqdm?

3

我想在我的脚本中使用tqdm,但如果他们没有安装它,我不希望其他人使用该脚本需要安装tqdm。

我找到了如下方法:

try:
    import tqdm
except ImportError:
    tqdm = None

但我不确定如何在此情况下使用 tqdm==None

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

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


2
你基本上需要编写一个类来模拟你的tqdm上下文管理器的所有功能,使其执行一些中性操作,例如返回传递给它的迭代器,或者在处理总大小时仅返回一个范围对象... - juanpa.arrivillaga
2个回答

2
我通常的做法是添加以下支持文件:

<!-- 我通常的做法是通过添加以下支持文件来解决该问题: -->

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

现在,你可以随时使用tqdm而不必担心它是否存在,因为后备选项将通过你正在迭代的内容,忽略所有与tqdm相关的选项。

最初的回答:

现在,您可以始终使用tqdm,无需担心其是否存在,因为后备选项将通过您正在迭代的内容,忽略所有与tqdm相关的选项。

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

承认你的用法(使用with)不适用于这种方法 - 但是我会将其保留在此供像我一样在for循环中使用它的人参考。翻译成:虽然您的用法(使用with)不适用于此方法,但是我仍会将其保留在此,供那些像我一样在for循环中使用它的人参考。

1
天才。如此简单,却非常有效。谢谢! - Dave

0

在 tqdm 的 文档 和我的 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))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接