2016-01-02 201 views
0

從網址下載csv.gz文件時遇到困難我下載tar.gz文件沒有問題。對於csv.gz文件,我能夠提取.gz文件並讀取我的csv文件,如果我可以使用URL而不是先前使用csv-1.0.csv.gz,那麼它將會非常方便。從Python下載csv.gz文件

This工作原理:

import urllib.request 
urllib.request.urlretrieve('http://www.mywebsite.com/csv-1-0.tar.gz','csv-1-0.tar.gz') 

這不起作用:

import urllib.request 
urllib.request.urlretrieve('http://www.mywebsite.com/csv-1-0.csv.gz','csv-1-0.csv.gz') 

我得到這個錯誤:UnicodeEncodeError: 'ASCII' 編解碼器不能編碼字符 '\ X-AD' 在第9位:在範圍序數不( 128)

+0

*這不起作用*是什麼意思?例外?沒有錯誤信息,但沒有文件? –

+0

我得到這個錯誤:UnicodeEncodeError:'ascii'編解碼器不能編碼字符'\ xad'在位置9:序號不在範圍內(128) –

+0

你可以添加完整的堆棧跟蹤到你的問題嗎?我想知道哪些行有錯誤。 – tdelaney

回答

1

正如文檔urllib.request的開頭部分所建議的那樣,建議將較好的requests模塊用於更高級別的http客戶端接口。該代碼非常簡單:

import requests 

url = "http://www.mywebsite.com/csv-1-0.csv.gz" 
filename = url.split("/")[-1] 
with open(filename, "wb") as f: 
    r = requests.get(url) 
    f.write(r.content) 

基本上,分配URL和目標文件名之後,你打開目標文件以二進制方式寫,請求文件,然後寫請求的文件的內容。完成並完成。

+0

我已經完成了上面的工作,但不起作用。當csv-1-0.csv.gz下載,我打開它在記事本中它是簡單的HTML?當我嘗試下載zip文件夾時也是如此。謝謝。 –

+0

@EvanRyan HTML文件的內容是什麼?這可能意味着服務器以某種方式配置錯誤,或鏈接已移動(HTTP 404)。你能從你的網絡瀏覽器下載文件嗎?如果是這樣,那麼你需要正確設置GET請求的標題。 – MattDMo

+0

我沒有正確設置GET請求的標題。現在正在工作。謝謝。 –