Python urllib2 进度挂钩

2023-12-02

我正在尝试使用 urllib2 http 客户端在 python 中创建下载进度条。我查看了 API(以及谷歌),似乎 urllib2 不允许您注册进度挂钩。然而,较旧的已弃用的 urllib 确实具有此功能。

有谁知道如何使用 urllib2 创建进度条或报告挂钩?或者还有其他一些技巧可以获得类似的功能吗?


这是一个完全有效的示例,它建立在 Anurag 响应分块方法的基础上。我的版本允许您设置块大小,并附加任意报告功能:

import urllib2, sys

def chunk_report(bytes_so_far, chunk_size, total_size):
   percent = float(bytes_so_far) / total_size
   percent = round(percent*100, 2)
   sys.stdout.write("Downloaded %d of %d bytes (%0.2f%%)\r" % 
       (bytes_so_far, total_size, percent))

   if bytes_so_far >= total_size:
      sys.stdout.write('\n')

def chunk_read(response, chunk_size=8192, report_hook=None):
   total_size = response.info().getheader('Content-Length').strip()
   total_size = int(total_size)
   bytes_so_far = 0

   while 1:
      chunk = response.read(chunk_size)
      bytes_so_far += len(chunk)

      if not chunk:
         break

      if report_hook:
         report_hook(bytes_so_far, chunk_size, total_size)

   return bytes_so_far

if __name__ == '__main__':
   response = urllib2.urlopen('http://www.ebay.com');
   chunk_read(response, report_hook=chunk_report)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python urllib2 进度挂钩 的相关文章

随机推荐

  • /usr/bin/env 错误的解释器

    尝试让 Amazon 的 EC2 命令行工具正常工作 这就是我的 bash profile 的样子 我收到错误 users zmjones ec2 bin ec2 add keypair usr bin env 错误的解释器 不允许操作 P
  • System.Data.OracleClient 需要 Oracle 客户端软件版本 8.1.7

    我有一个使用 Vb net9 在 Vista 上开发的网站 它与 Oracle 建立连接 对于连接 我使用 System Data OracleClient 它在我的机器和我们的测试服务器上运行良好 但在生产服务器上不起作用 我们在服务器上
  • 相同的字符串文字被认为是相等的吗? [复制]

    这个问题在这里已经有答案了 我写了以下程序 include
  • 没有 crontab -e 的 crontab

    我想通过在我的服务器中执行以下操作来添加 crontab 计划 echo 30 home my var dir to script var etc etc etc gt crontab e 有没有办法做到这一点而不需要做crontab e然
  • Http POST 重音编码

    我有一个编码问题 当我在 Web 浏览器的输入中键入字符 时 它会显示为 E9 并且工作正常 另一方面 当我尝试使用 Python 和请求库发布请求时 它会作为 C3 A9 发送 我该如何解决这个问题 这是不起作用的代码 requests
  • 如何通过单击 mui 中的外部按钮来过滤 DataGrid 列

    假设我有一个像这样的数据网格表 来自官方 MUI 文档 import as React from react import DataGrid GridToolbar from mui x data grid import useDemoDa
  • 如何将数据帧列乘以浮点常量?

    我正在尝试将一列乘以一个浮点数 我这里有它的代码 if str cMachineName str K42 df temp loc P float 105 0 59 0 math pi 0 95 1000 3540 但它给了我这个错误 Typ
  • 如何逆序读取文件?

    如何使用python以相反的顺序读取文件 我想从最后一行到第一行读取一个文件 以生成器形式编写的正确 高效的答案 import os def reverse readline filename buf size 8192 A generat
  • 将多个 .csv 文件导入 R 并添加带有文件名的新列

    我有 80 个独立的 csv 文件 它们具有相同的列和标题 我可以使用以下命令将其导入并绑定为一个数据帧 file names lt dir Desktop data df lt do call rbind lapply file name
  • 具有自定义源重定向请求的 CloudFront 分配

    我设置了一个 CloudFront 发行版来与定制产地 我客户的网络服务器 www mydomain com 当我加载网页并检查 Chrome Web 检查器的 网络 选项卡时 资产显示为来 自源服务器 www mydomain com 发
  • 打开基于搜索查询的 URL,无需使用 php“?q=(myTerm)”,而是使用简单的“/(myTerm)”

    这让我陷入困境 我显然不明白一些非常基本的东西 我希望有人能够阐明这个问题
  • 如何创建在运行时已知的类的实例?

    我们如何创建一个带有参数化的类的对象 构造函数 并且类的名称将在 作为命令行参数运行时 这行是什么意思 新的类 String class String 和 String class 之间有什么区别 类 c Class forName arg
  • 如何等待异步http结束后再继续?

    在GWT中有什么方法可以等待异步调用完成吗 我需要响应才能继续 这是一个登录屏幕 因此成功意味着更改为实际游戏 失败意味着停留在登录屏幕中 这是调用 private void execRequest RequestBuilder build
  • MySQL 和 PHP:带有西里尔字符的 UTF-8 [重复]

    这个问题在这里已经有答案了 我试图在 MySQL 表中插入西里尔字母值 但编码存在问题 Php
  • Angular-UI 路由器无法在 Ionic 应用程序中工作

    我正在开发一个使用 Ionic Framework 的应用程序 但在尝试使用 Angular ui 路由器时遇到问题 下面的第一段代码运行完美 然而 一旦我删除ng controller LoginController as login 并
  • 为什么 try {...} finally {...} 好;尝试{...}抓住{}不好?

    我见过有人说使用不带参数的 catch 是一种不好的形式 特别是如果该 catch 不执行任何操作 StreamReader reader new StreamReader myfile txt try int i 5 0 catch No
  • OpenCV 匹配模板得分不佳

    我正在尝试使用 OpenCV 进行一些图像匹配 并使用 cvMatchTemplate 函数 我拍摄了一张样本图像 然后将其一部分剪下来作为模板 然后尝试匹配它 当我这样做时 cvMatchTemplate 函数正确找到子图像并给它最好的分
  • 无法跨库项目使用 .aidl 文件吗?

    本着重用代码的精神 我正在尝试创建一些库项目 但是 我似乎在定义跨库的 aidl 文件时遇到了问题 问题是这样的 在库 A 中 我有 Foo java 和 Foo aidl Foo java 是 Parcelable 所以 aidl 声明是
  • 在 Windows XP 中安装 Xcode

    我想知道我是否可以在 Windows XP 上安装 Xcode 如果可能 还请提供文档链接 非常感谢您提前提供的帮助 这当然是可能的 有两条路线 在第二个分区 磁盘上安装 OSx86 又名 iATKOS Kalyway 并进行双引导 在 V
  • Python urllib2 进度挂钩

    我正在尝试使用 urllib2 http 客户端在 python 中创建下载进度条 我查看了 API 以及谷歌 似乎 urllib2 不允许您注册进度挂钩 然而 较旧的已弃用的 urllib 确实具有此功能 有谁知道如何使用 urllib2