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

问题描述 投票:0回答:1

我在从 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)

python python-3.x csv url gzip
1个回答
13
投票

正如

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

© www.soinside.com 2019 - 2024. All rights reserved.