You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

读取GitHub上GeoJSON文件触发OSError[Errno22]的技术求助

解决GitHub远程GeoJSON读取报错的问题

问题根源

open()函数是专门用来读取本地文件系统内文件的工具,它完全不支持HTTP/HTTPS这类远程链接格式。你把GitHub的原始文件URL传给它,它会把这个链接当成无效的本地文件路径,自然就抛出OSError: [Errno 22] Invalid argument错误了。

正确解决思路

要读取远程的GeoJSON文件,得先通过HTTP请求把文件内容下载到本地内存,再用json模块解析。最简洁易用的方式是借助requests库,步骤如下:

  1. 先确保你安装了requests(没装的话执行pip install requests)
  2. 用requests.get()发起请求获取文件内容
  3. 用json.loads()解析返回的文本内容

替换后的代码示例

import json
import requests

base_url = 'https://raw.githubusercontent.com/otteheng/Teacher-Quality-Gaps-Dash/master/'
year = '1988'
binz = 'experience_gap_bins_0.102-0.805'
full_url = f"{base_url}{year}/{binz}.geojson"

# 发送请求获取远程文件内容
response = requests.get(full_url)
# 检查请求是否成功(比如404、500这类错误会直接抛出异常)
response.raise_for_status()

# 解析JSON格式内容
geo = json.loads(response.text)

备选方案(用Python标准库)

如果不想额外安装第三方库,也可以用标准库的urllib.request实现:

import json
from urllib.request import urlopen

full_url = f"{base_url}{year}/{binz}.geojson"
with urlopen(full_url) as response:
    geo = json.load(response)

小提示

记得在代码里加入异常处理逻辑,比如捕获网络超时、链接无效这类情况,避免程序因为突发网络问题直接崩溃。

内容的提问来源于stack exchange,提问作者otteheng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:21:15