如何從 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學習者快速成長!