有没有办法阻止tqdm在命令行中发送垃圾邮件?

时间:2017-11-02 14:07:45

标签: python python-3.x urllib tqdm

我只想从URL下载Python3中的进度条。 我所拥有的代码不会停留在一行而是打印出数百条新行。是否有办法限制它以使其看起来更干净并且可能改变设计?

class TqdmUpTo(tqdm):
"""Provides `update_to(n)` which uses `tqdm.update(delta_n)`."""
def update_to(self, b=1, bsize=10, tsize=None):
    """
    b  : int, optional
        Number of blocks transferred so far [default: 1].
    bsize  : int, optional
        Size of each block (in tqdm units) [default: 1].
    tsize  : int, optional
        Total size (in tqdm units). If [default: None] remains unchanged.
    """
    if tsize is not None:
        self.total = tsize
    self.update(b * bsize - self.n)  # will also set self.n = b * bsize

def downloader(urllink, filename):
    with TqdmUpTo(unit='B', unit_scale=True, miniters=1,
        desc=urllink.split('/')[-1]) as t:  # all optional kwargs
        urllib.request.urlretrieve(urllink, filename=filename, reporthook=t.update_to, data=None)

这样的事情是理想的。

100%|███████████████████████████████▉| 8014/8014 [01:37< 00:00,82.29files / s] (来源:https://github.com/tqdm/tqdm

希望有人可以帮助我,如果可能的话......

提前致谢:)

2 个答案:

答案 0 :(得分:0)

y = y - 1; if(y < 0){ y = height; } 使用tqdm每次迭代重写一行,但不同的控制台环境会以不同的方式解释\r

只是通过对我在这里所做的一些实验,

\r

从项目的README(强调我的),

  

tqdm不需要任何依赖项(甚至不是curses!),只需要Python和支持回车符\ r和换行符\ n控制字符的环境

并且,在“常见问题”下:

  

游戏机一般:需要支持回车(CR,\ r)。

因此,请尝试切换到其他控制台。

看起来您还想更改条形图的设计(或只是颜色?)。它看起来不像库支持这样,所以你必须要查看源代码并对其进行编辑,或者在Python中尝试不同的进度条实现。

答案 1 :(得分:0)

好吧,我自己解决了这个问题,我从未想过它会那么容易:d

答案称为wget

import wget
url = "https://www.python.org/static/img/python-logo.png"

filename = "logo.png"
wget.download(url, filename)

或者如果我想使用原始文件名:

import wget
url = "https://www.python.org/static/img/python-logo.png"

filename = wget.download(url, filename)

现在我只需要弄清楚,如何更改设计,但这只是可选的,因为我喜欢它现在的设计。