返回
Python 下载文件的多种方法
后端
2023-09-05 17:55:26
使用 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 下载文件的各种方式。在选择下载方式时,需要考虑文件的大小、是否需要断点续传等因素。