httplib2在python中下载进度条

发布于 2024-10-18 03:49:33 字数 78 浏览 4 评论 0原文

使用 httplib2 时,是否可以在 python 中显示文件下载的百分比?我知道你可以使用 urllib2 但我想使用 httplib2。

Is it possible to display the percentage a file has downloaded in python while using httplib2? I know you can with urllib2 but I want to use httplib2.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

桃扇骨 2024-10-25 03:49:33

不会。httplib2 没有任何类型的进度信标回调,因此它只是阻塞,直到请求完成。

No. httplib2 doesn't have any kind of progress beacon callback, so it simply blocks until the request is finished.

过潦 2024-10-25 03:49:33

我不太确定如何使用 async()
看来已经正式解决了。

您可以自行修改httplib2:
(将回调函数arg添加到request()函数中)
在类中Http:
in def _request:
修改为:

def _request(self, conn, host, absolute_uri, request_uri, method, body, headers, redirections, cachekey,callback=None):

in def _conn_requst: 修改为:

def _conn_request(self, conn, request_uri, method, body, headers,callback=None):

修改如下

if method == "HEAD":
    conn.close()
else:
    if not callback:
        content = response.read()
    else:
        while 1:
           content=response.read(callback[0])
           if not content:break
           callback[1]()

使用时

resp, content = h.request("http://stackoverflow.com", [8192,callbackfunc])

:前8192为块大小,callbackfunc为回调您定义的函数(如 urllib 中)

i'm not very sure with how to use async()
seems it's already OFFICIALLY solved.

and it's possible to modify httplib2 by your self:
(add a callback function arg to the request() func)
in class Http:
in def _request:
modify it to:

def _request(self, conn, host, absolute_uri, request_uri, method, body, headers, redirections, cachekey,callback=None):

in def _conn_requst: modify it to:

def _conn_request(self, conn, request_uri, method, body, headers,callback=None):

modify this below

if method == "HEAD":
    conn.close()
else:
    if not callback:
        content = response.read()
    else:
        while 1:
           content=response.read(callback[0])
           if not content:break
           callback[1]()

when use you can type like this:

resp, content = h.request("http://stackoverflow.com", [8192,callbackfunc])

the first 8192 is chunk size, and callbackfunc is the callback function you defined(like in urllib)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文