首頁 >後端開發 >Python教學 >如何在 Python 3 中從網路下載檔案?

如何在 Python 3 中從網路下載檔案?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-04 03:53:01859瀏覽

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>
  • url.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.url

    urllib.request.urlwith urllib.request.urlopen(URL) as response, open(file_name, 'wb') as out_file: data = response.read() # a `bytes` object out_file.write(data):較簡單的選項,但僅建議用於小檔案:

壓縮資料處理

<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