我在从 url 下载 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' 编解码器无法对位置 9 中的字符 '\xad' 进行编码:序号不在范围内(128)
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和目标文件名后,以二进制方式打开写入的目标文件,请求文件,然后将请求的内容写入文件。完成和完成。