首頁  >  文章  >  後端開發  >  如何從 Python 3 儲存為字串的 URL 下載檔案?

如何從 Python 3 儲存為字串的 URL 下載檔案?

Susan Sarandon
Susan Sarandon原創
2024-11-04 06:48:01174瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn