当前位置: 首页 > 面试题库 >

Python urllib2进度挂钩

郗俊能
2023-03-14
问题内容

我正在尝试使用urllib2
http客户端在python中创建下载进度栏。我已经查看了API(以及Google),似乎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)


 类似资料:
  • 本来约了14:00面试,没用过牛客所以13:30先进去试试,签到完直接就有个面试官来面了。机器学习岗,对面没开摄像头就开始了,问了实习的工作,BERT,还有其他NLP相关的常规八股,20分钟后手撕一道重排链表,一道判断链表是否有环,都做出来了,然后说今天面试已结束,拜拜,挂面试,没有反问。秒共享。感觉还是浓浓的kpi味道啊害

  • 问题内容: 我尝试完成的任务是流式处理ruby文件并打印输出。(注意:我不想一次打印出所有内容) main.py puts “hello” 问题 流文件工作正常。打招呼/再见输出将延迟2秒打印。就像脚本应该工作一样。问题是readline()最终挂起并且永不退出。我从来没有达到最后的打印。 我知道这里有很多类似的问题,但是这些都不是让我解决问题的方法。我并不是整个子流程中的人,所以请给我一个更实际

  • 面试大概一个小时 1. 自我介绍 2. 说一段项目经历并深挖 3. 了解transformer吗,详细介绍encoder的结构,并说明为何需要position encoding 4. 了解堆排序吗,说说流程 5. 手撕最长上升子序列 6. 反问业务,说是大模型微调 全部答上来了,几乎没有答的不满意的地方。面试完秒挂。应该是方向不匹配。那为啥捞我?

  • 7.21 面的算法岗,面试官很和蔼,问的问题很有深度,后面才知道是百度很多模型的核心开发人员,牛! 上来先做题,让共享屏幕。题目是编辑距离,想了一会写出来了,让写几个测试样例跑一下,写了几个边界条件测试了一下,面试官说可以了,然后手撕代码就过了。 接着开始自我介绍,完了开始问论文相关的东西。我介绍过程中他会就感兴趣的点提问,问的很有深度,但是好在多数问题我自己准备过,答得还算可以。 接着根据论文延

  • 使用一些额外的类和一些巧妙的浏览器特有的 CSS,样式化 HTML5 的<progress> 元素。确保你阅读了浏览器支持。 <progress class="progress" value="0" max="100">0%</progress> <progress class="progress" value="25" max="100">25%</progress> <progress c

  • 进度条 <div class="ui-progress"> <span style="width:50%"></span> </div> 图片上进度条 <ul class="ui-grid-halve"> <li> <div class="ui-grid-halve-img"> <span style="background-ima