首页  >  文章  >  后端开发  >  如何在 Python 3 中从网络下载文件?

如何在 Python 3 中从网络下载文件?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-04 03:53:01796浏览

How to Download Files from the Web in Python 3?

在 Python 3 中从 Web 下载文件

简介

创建与互联网交互的程序时,经常需要下载文件来自网络服务器。在 Python 3 中,有多种方法可以完成此任务。

Python 3 解决方案

最初提供的代码遇到错误,因为函数需要 URL 参数为字节类型,但提取的JAD 文件中的 URL 是一个字符串。要在 URL 存储为字符串时下载文件,请使用 UTF-8 编码将其转换为字节类型:

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

def downloadFile(URL=None):
    h = urllib.request.urlopen(URL.encode('utf-8'))
    return h.read()

downloadFile(URL_from_file)</code>

替代解决方案:

有多种替代方法从网络下载文件:

  • urllib.request.urlopen:通过读取urlopen的响应来获取网页内容:

    <code class="python">response = urllib.request.urlopen(URL)
    data = response.read() # a `bytes` object
    text = data.decode('utf-8') # a `str`</code>
  • urllib.request.urlretrieve:下载并本地保存文件:

    <code class="python">urllib.request.urlretrieve(URL, file_name)</code>
  • urllib.request。 urlopen Shutil.copyfileobj:提供强烈推荐且最正确的文件下载方法:

    <code class="python">with urllib.request.urlopen(URL) as response, open(file_name, 'wb') as out_file:
      shutil.copyfileobj(response, out_file)</code>
  • urllib.request.urlopen 写入字节对象:更简单的选项,但仅推荐用于小文件:

    <code class="python">with urllib.request.urlopen(URL) as response, open(file_name, 'wb') as out_file:
      data = response.read() # a `bytes` object
      out_file.write(data)</code>

压缩数据处理

最后,即时提取压缩数据也是如此可能:

<code class="python">url = 'http://example.com/something.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 中从网络下载文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn