我想直接读取文件到python w / o必须保存它 - 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())
但我收到错误: UnicodeDecodeError:' utf-8'编解码器不能解码位置15中的字节0xa0:无效的起始字节
可以采取哪些额外措施来解决这个问题?
我正在使用python 3.6。
谢谢!
答案 0 :(得分:2)
您现在将压缩存档(可包含许多文件)视为包含实际数据的文件。我们假设您的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。
答案 1 :(得分:2)
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)