我在从网址下载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)
答案 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和目标文件名后,打开目标文件以便以二进制模式写入,请求文件,然后将请求的内容写入文件。做完了。