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

为何'Status'对象不可下标?如何修复Tweepy代码报错?

问题:Tweepy中'Status'对象不可下标的原因及修复方案

问题重现

你尝试用以下代码获取用户推文:

def get_all_tweets(screen_name):
    api = tweepy.API(auth)

    # 初始化列表存储推文
    alltweets = []

    # 请求最新的200条推文(API单次请求最大限制)
    new_tweets = api.user_timeline(screen_name = screen_name, count=200)

    # 保存最新推文
    alltweets.extend(new_tweets)
    
    # 保存最旧推文ID减1,用于后续分页请求
    oldest = alltweets[-1]["id"] - 1 

运行时触发错误:

<ipython-input-7-2ce84a05eaae> in get_all_tweets(screen_name)
    110 
    111     #save the id of the oldest tweet less one
--> 112     oldest = alltweets[-1]["id"] - 1
    113 
    114 

TypeError: 'Status' object is not subscriptable

原因分析

Tweepy的api.user_timeline()返回的是Status类的实例列表,不是字典类型。你用["id"]这种字典下标访问的方式操作Status对象,自然会触发“不可下标”的错误——只有字典、列表这类可迭代容器支持下标访问,类实例需要用属性访问语法。

修复方案

将下标访问改为属性访问即可:

# 替换原来的错误代码行
oldest = alltweets[-1].id - 1

如果需要字符串类型的ID(避免大数精度丢失问题),可以改用:

oldest = int(alltweets[-1].id_str) - 1

额外建议:如果目标用户无推文或请求失败,alltweets会是空列表,直接访问alltweets[-1]会触发索引错误,建议提前做检查:

if alltweets:
    oldest = alltweets[-1].id - 1
else:
    # 处理无推文/请求失败的情况
    oldest = None

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:20:36