建立與網路互動的程式時,經常需要下載檔案來自網路伺服器。在 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
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 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中文網其他相關文章!