在Python中,我们可以使用urllib库或requests库来通过HTTP下载文件。下载文件时,我们需要注意文件的大小和下载进度,以便正确地下载文件。本文将通过实例讲解如何使用Python通过HTTP下载文件,包括使用urllib库和requests库,以及两个示例。
使用urllib库下载文件
我们可以使用urllib库的urlretrieve方法来下载文件。以下是一个示例,演示如何使用urllib库下载文件:
import urllib.request
url = 'http://example.com/file.zip'
filename = 'file.zip'
urllib.request.urlretrieve(url, filename)
在上面的示例中,我们使用urllib库的urlretrieve方法下载文件。我们将文件的URL保存在url变量中,将文件的名称保存在filename变量中,然后使用urlretrieve方法下载文件。
使用requests库下载文件
我们可以使用requests库的get方法来下载文件。以下是一个示例,演示如何使用requests库下载文件:
import requests
url = 'http://example.com/file.zip'
filename = 'file.zip'
response = requests.get(url, stream=True)
with open(filename, 'wb') as f:
for chunk in response.iter_content(chunk_size=1024):
if chunk:
f.write(chunk)
在上面的示例中,我们使用requests库的get方法下载文件。我们将文件的URL保存在url变量中,将文件的名称保存在filename变量中,然后使用get方法下载文件。我们使用stream参数来启用流式下载,以便下载大文件。我们使用iter_content方法来迭代下载文件的内容,并使用chunk_size参数来设置每个块的大小。我们使用open函数打开文件,并使用write方法将文件内容写入文件。
示例2:使用requests库下载文件并显示下载进度
以下是一个示例,演示如何使用Python通过HTTP下载文件并显示下载进度:
import requests
import sys
url = 'http://example.com/file.zip'
filename = 'file.zip'
response = requests.get(url, stream=True)
total_size = int(response.headers.get('content-length', 0))
block_size = 1024
progress_bar = ''
with open(filename, 'wb') as f:
for chunk in response.iter_content(chunk_size=block_size):
if chunk:
f.write(chunk)
downloaded_size = len(chunk)
progress_bar += '#' * int(downloaded_size * 50 / total_size)
sys.stdout.write('\r[%s] %d%%' % (progress_bar, downloaded_size * 100 / total_size))
sys.stdout.flush()
print('\nDownload complete!')
在上面的示例中,我们使用requests库的get方法下载文件。我们将文件的URL保存在url变量中,将文件的名称保存在filename变量中,然后使用get方法下载文件。我们使用stream参数来启用流式下载,以便下载大文件。我们使用headers属性来获取HTTP响应头,然后使用content-length属性来获取文件的大小。我们使用iter_content方法来迭代下载文件的内容,并使用chunk_size参数来设置每个块的大小。我们使用open函数打开文件,并使用write方法将文件内容写入文件。我们使用sys.stdout.write方法和sys.stdout.flush方法来显示下载进度条。
总结
本文通过实例讲解了如何使用Python通过HTTP下载文件,包括使用urllib库和requests库,以及两个示例。我们可以使用urlretrieve方法或get方法来下载文件,以便获取文件内容。同时,我们也需要注意文件的大小和下载进度,以便正确地下载文件。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python通过http下载文件的方法详解 - Python技术站