在Python中从url下载csv.gz文件

时间:2016-01-02 01:33:33

标签: csv python-3.x url gz

我在从网址下载csv.gz文件时遇到问题我下载tar.gz文件没问题。对于csv.gz文件,我能够提取.gz文件并读取我的csv文件,如果我可以使用URL而不是手头有csv-1.0.csv.gz,那么它会很方便

这有效:

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'编解码器不能对字符' \ xad'进行编码。位置9:序数不在范围内(128)

1 个答案:

答案 0 :(得分:3)

正如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和目标文件名后,打开目标文件以便以二进制模式写入,请求文件,然后将请求的内容写入文件。做完了。