我想直接将文件读取到 python 中而不需要保存它 - zip 文件相对较小并且绝对适合内存。
我目前正在尝试这个:
import urllib
import json
access_url = urllib.request.urlopen('http://api.eia.gov/bulk/COAL.zip')
data = json.loads(access_url.read().decode())
Run Code Online (Sandbox Code Playgroud)
但我收到错误: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)
Run Code Online (Sandbox Code Playgroud)
或类似的东西。我实际上无法测试实时数据,但可以尝试一下。它基本上会解压缩在存档中找到的第一个文件,然后将其视为 json。
| 归档时间: |
|
| 查看次数: |
2541 次 |
| 最近记录: |