Python 读取直接从urlrquest压缩的json
我想直接将一个文件读到python,而不必保存它——zip文件相对较小,并且绝对适合mem 我目前正在尝试:Python 读取直接从urlrquest压缩的json,python,json,api,Python,Json,Api,我想直接将一个文件读到python,而不必保存它——zip文件相对较小,并且绝对适合mem 我目前正在尝试: import urllib import json access_url = urllib.request.urlopen('http://api.eia.gov/bulk/COAL.zip') data = json.loads(access_url.read().decode()) 但我得到了一个错误: Unicode
import urllib
import json
access_url = urllib.request.urlopen('http://api.eia.gov/bulk/COAL.zip')
data = json.loads(access_url.read().decode())
但我得到了一个错误:
UnicodeDecodeError:“utf-8”编解码器无法解码位置15中的字节0xa0:无效的开始字节
什么额外的步骤可以解决这个问题
我正在使用python 3.6
谢谢 现在,您将压缩的存档(可以包含许多文件)视为包含实际数据的文件。让我们假设您的zip只包含一个文件,其中包含实际的JSON数据。这将有助于:
import zipfile
import io
import urllib
import json
access_url = urllib.request.urlopen('http://api.eia.gov/bulk/COAL.zip')
z = zipfile.ZipFile(io.BytesIO(access_url.read()))
data = json.loads(z.read(z.infolist()[0]).decode())
print(data)
或者类似的。实际上,我无法对实时数据进行测试,但尝试一下。它基本上将在归档中找到的第一个文件解压缩,然后将其作为json处理 这是一个zip文件,你想要什么?请参见此
https://docs.python.org/2/library/zipfile.html
您的COAL.zip文件具体包含哪些内容?现在的问题是,您将压缩的归档文件视为json数据,这是不对的。您需要从存档中提取包含json数据的实际文件。例如,您知道归档文件中的文件名吗?存档文件包含很多文件吗?@Hannu它包含一个名为COAL.txt的json格式的文件。@RaminNietzsche是的,但我想解压并获取json,而不必将其保存在磁盘中,因为这是小文件。。。
import urllib.request
import json
from io import BytesIO
from zipfile import ZipFile
access_url = urllib.request.urlopen('http://api.eia.gov/bulk/COAL.zip')
zf = ZipFile(BytesIO(access_url.read()))
zdata = zf.read('COAL.txt')
print(zdata)