返回

Python 下载文件的多种方法

后端

使用 Requests 库下载文件

Requests 是一个流行的 Python 库,可以用来发送 HTTP 请求。它可以用来下载文件,方法是使用 get 方法并指定要下载的文件的 URL。

import requests

# 要下载的文件的 URL
url = 'https://example.com/file.txt'

# 发送 HTTP GET 请求
response = requests.get(url)

# 如果响应状态码为 200,则下载文件
if response.status_code == 200:
    # 将文件内容写入磁盘
    with open('file.txt', 'wb') as f:
        f.write(response.content)

使用 urllib 库下载文件

urllib 是 Python 标准库中包含的一个用于发送 HTTP 请求的模块。它也可以用来下载文件,方法是使用 urlopen 函数并指定要下载的文件的 URL。

import urllib.request

# 要下载的文件的 URL
url = 'https://example.com/file.txt'

# 发送 HTTP GET 请求
response = urllib.request.urlopen(url)

# 如果响应状态码为 200,则下载文件
if response.status == 200:
    # 将文件内容写入磁盘
    with open('file.txt', 'wb') as f:
        f.write(response.read())

使用 wget 库下载文件

wget 是一个命令行工具,可以用来下载文件。它也可以在 Python 中使用,方法是使用 subprocess 模块。

import subprocess

# 要下载的文件的 URL
url = 'https://example.com/file.txt'

# 使用 wget 下载文件
subprocess.call(['wget', url])

使用断点续传下载大文件

当下载大文件时,如果下载过程中断,则需要从头开始重新下载。为了避免这种情况,可以使用断点续传来下载文件。断点续传是指从上次中断的位置继续下载文件。

在 Python 中,可以使用 requests 库来实现断点续传。方法是使用 get 方法并指定要下载的文件的 URL 和要保存文件的路径。如果文件已经存在,则 requests 库会自动从上次中断的位置继续下载文件。

import requests

# 要下载的文件的 URL
url = 'https://example.com/file.txt'

# 要保存文件的路径
path = 'file.txt'

# 如果文件已经存在,则获取文件的当前大小
if os.path.exists(path):
    file_size = os.path.getsize(path)
else:
    file_size = 0

# 设置请求头,指定要下载文件的范围
headers = {'Range': 'bytes=%d-' % file_size}

# 发送 HTTP GET 请求
response = requests.get(url, headers=headers)

# 如果响应状态码为 206,则继续下载文件
if response.status_code == 206:
    # 将文件内容写入磁盘
    with open(path, 'ab') as f:
        f.write(response.content)

结论

本文介绍了 Python 下载文件的各种方式。在选择下载方式时,需要考虑文件的大小、是否需要断点续传等因素。