Python将网络文件下载到本地

Python将网络文件下载到本地

前言

相关介绍

  • Python是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
  • PyTorch 是一个深度学习框架,封装好了很多网络和深度学习相关的工具方便我们调用,而不用我们一个个去单独写了。它分为 CPU 和 GPU 版本,其他框架还有 TensorFlow、Caffe 等。PyTorch 是由 Facebook 人工智能研究院(FAIR)基于 Torch 推出的,它是一个基于 Python 的可续计算包,提供两个高级功能:1、具有强大的 GPU 加速的张量计算(如 NumPy);2、构建深度神经网络时的自动微分机制。
  • Requests是一个流行的Python第三方库,用于发送HTTP请求。它提供了一种简单且优雅的方式来与Web服务进行交互,包括发送GET、POST、PUT、DELETE等类型的HTTP请求,并处理响应数据。
  • 以下是Requests库的一些主要特点和用法:
    • 简单易用:Requests库的API设计非常简单,使得发送HTTP请求变得直观和易于理解。
    • 多种请求方法:通过requests.get()、requests.post()、requests.put()、requests.delete()等函数,您可以轻松地发送不同类型的HTTP请求。
    • 请求参数:您可以在请求中添加查询参数、请求头、Cookies等。
    • 请求正文:对于POST和PUT请求,您可以通过data参数传递表单数据,或者使用json参数传递JSON数据。
    • 响应处理:Requests库允许您以不同格式(如文本、JSON、二进制数据)获取响应内容,并提供了方便的方法来处理响应状态码、响应头等。
    • 异常处理:Requests库在发生请求相关的异常时会抛出异常,如连接超时、请求错误等,您可以使用try和except来处理这些异常。
  • Time是Python标准库中的一个模块,用于处理与时间相关的操作。它提供了许多功能,使您能够获取当前时间、处理时间间隔、格式化时间等。
  • 以下是Time模块的一些主要功能和用法:
    • 获取当前时间:您可以使用time.time()函数获取从1970年1月1日以来的当前时间的秒数(称为Unix时间戳)。这在测量时间间隔、性能分析等方面很有用。
    • 格式化时间:通过time.strftime()函数,您可以将时间对象格式化为字符串,以便显示为人类可读的形式。您可以使用一系列格式化指令(例如%Y表示年份,%m表示月份,等等)来定义输出格式。
    • 解析时间:使用time.strptime()函数,您可以将格式化的时间字符串解析为时间对象。
    • 时间延迟:通过time.sleep()函数,您可以使程序暂停执行指定的秒数,从而实现时间延迟。
    • 时间测量:您可以使用time.perf_counter()和time.process_time()函数来测量程序执行的实际时间和处理器时间。

Python将网络文件下载到本地

在这里插入图片描述

import requests
import time
 
def downloadFile(name, url):
    headers = {
    
    'Proxy-Connection':'keep-alive'}
    r = requests.get(url, stream=True, headers=headers)
    length = float(r.headers['content-length'])
    f = open(name, 'wb')
    count = 0
    count_tmp = 0
    time1 = time.time()
    for chunk in r.iter_content(chunk_size = 512):
        if chunk:
            f.write(chunk)
            count += len(chunk)
            if time.time() - time1 > 2:
                p = count / length * 100
                speed = (count - count_tmp) / 1024 / 1024 / 2
                count_tmp = count
                print(name + ': ' + formatFloat(p) + '%' + ' Speed: ' + formatFloat(speed) + 'M/S')
                time1 = time.time()
    f.close()
     
def formatFloat(num):
    return '{:.2f}'.format(num)
     
if __name__ == '__main__': 
    downloadFile('csdn.png', 'https://img-home.csdnimg.cn/images/20201124032511.png')

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/FriendshipTang/article/details/132387410
今日推荐