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

Downloading a csv.gz file from url in Python

我在从 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, the excellent requests 模块推荐用于 higher-level 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和目标文件名后,以二进制方式打开写入目标文件,请求文件,然后将请求的内容写入文件。大功告成。