2016-01-02 175 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请求的标题。现在正在工作。谢谢。 –