如何从 Python 3 中存储为字符串的 URL 下载文件?

Susan Sarandon
发布: 2024-11-04 06:48:01
原创
172 人浏览过

How to Download a File from a URL Stored as a String in Python 3?

如何在 Python 3 中使用存储在字符串中的 URL 从 Web 下载文件

当尝试从在 Python 3 中的 Web 服务器中,传递字符串作为 URL 可能会导致需要字节输入的错误。本文介绍了几种规避此问题并成功检索文件的方法。

使用 urllib.request.urlopen

要获取网页的内容,请使用 urllib .request.urlopen()。该函数返回一个响应对象,然后可以将其读入变量:

<code class="python">import urllib.request

url = 'http://example.com/'
response = urllib.request.urlopen(url)
data = response.read()  # a `bytes` object</code>
登录后复制

使用 urlib.request.urlretrieve

最直接的下载和下载方法保存文件是利用 urllib.request.urlretrieve 函数:

<code class="python">import urllib.request

url = 'http://example.com/file.txt'
urllib.request.urlretrieve(url, 'file.txt')</code>
登录后复制

此方法从指定的 URL 下载文件并在本地保存为 'file.txt'。

将 urlib.request.urlopen 与 Shutil.copyfileobj 结合使用

为了更好地控制下载过程,请使用 urllib.request.urlopen() 返回一个类似文件的对象。然后可以使用shutil.copyfileobj()将该对象复制到真实文件:

<code class="python">import urllib.request
import shutil

url = 'http://example.com/file.zip'
with urllib.request.urlopen(url) as response, open('file.zip', 'wb') as out_file:
    shutil.copyfileobj(response, out_file)</code>
登录后复制

将下载存储为字节

如果速度是优先考虑的,则下载的数据可以直接存储到字节对象中,然后写入文件,尽管这仅适用于小文件:

<code class="python">import urllib.request

url = 'http://example.com/icon.png'
with urllib.request.urlopen(url) as response, open('icon.png', 'wb') as out_file:
    data = response.read() # a `bytes` object
    out_file.write(data)</code>
登录后复制

处理压缩文件

urllib.request.urlopen() 还可以用于处理压缩文件,前提是服务器支持随机访问:

<code class="python">import urllib.request
import gzip

url = 'http://example.com/archive.gz'
with urllib.request.urlopen(url) as response:
    with gzip.GzipFile(fileobj=response) as uncompressed:
        file_header = uncompressed.read(64) # a `bytes` object</code>
登录后复制

通过实现其中一种方法,开发人员可以在 Python 3 中成功从网络下载文件,即使 URL 存储为字符串。

以上是如何从 Python 3 中存储为字符串的 URL 下载文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!