You need to enable JavaScript to run this app. Python运行报'TypeError: 'NoneType' object is not subscriptable'如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Python运行报'TypeError: 'NoneType' object is not subscriptable'如何解决

错误原因排查

TypeError: 'NoneType' object is not subscriptable 错误本质是你尝试对None值使用[]语法取下标/属性,你的代码中有两处可能触发该错误的场景:

  • 未做请求状态校验就直接调用.json()获取结果:如果接口返回4xx/5xx错误、响应内容不是合法JSON、或接口直接返回null,会导致变量r为None,执行r['assets']时就会报错。
  • 嵌套字段未做非空校验:你仅判断了asset不为None,但没有校验下层字段,如果某条资产的creator为None,或creator下的user为None,执行asset['creator']['user']['username']时就会触发报错。
修复后的代码
import requests

url2 = "https://xxx.xxxxxx.xx/xxx/xx/xxxxxx"
querystring = {"order_direction":"desc","offset":"0","limit":"5000", "owner": "xxxxxxxxxxxxxxxxxxxxxxxx"}
headers = {
    "Accept": "application/json",
    }

# 先校验请求状态
resp = requests.get(url2, params=querystring, headers=headers)
resp.raise_for_status() # 状态码异常时直接抛出对应错误,方便定位问题
r = resp.json()

# 遍历逐层做非空校验
for asset in r.get('assets', []):
    if not asset:
        continue
    creator = asset.get('creator')
    if not creator:
        continue
    user = creator.get('user')
    if not user:
        continue
    print(user.get('username'))
排查技巧

如果修改后仍然有问题,可以先打印完整响应内容print(r),确认接口返回的结构是否符合你的预期,也可以在遍历asset时打印异常的资产数据,定位具体是哪条数据存在字段缺失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 01:45:04