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

Twitter回复Bot读取推文ID报错求助:int()转换无效

问题解决:Twitter回复机器人存储已回复ID报错

核心问题分析

你遇到的invalid literal for int() with base 10错误,本质是两个关键问题导致的:

  • 函数参数命名不合法:reply.txt包含点号,不符合Python变量命名规则,你的代码其实连语法检查都过不了这一关。
  • 空文件/无效内容转换失败:即使参数名改对了,如果文件为空、内容是空白字符或者非整数文本,int()转换就会抛出ValueError。

修正后的代码

直接替换你原来的两个函数,解决所有问题:

def read_last_seen(filename):
    try:
        with open(filename, 'r') as file_read:
            content = file_read.read().strip()
            # 内容为空时返回初始ID(比如0,可根据需求调整)
            return int(content) if content else 0
    except (FileNotFoundError, ValueError):
        # 文件不存在或内容无效时,返回初始ID
        return 0

def store_last_seen(filename, last_seen_id):
    with open(filename, 'w') as file_write:
        file_write.write(str(last_seen_id))

关键改动说明

  1. 合法参数名:把reply.txt换成filename,符合Python变量命名规范,同时让函数更通用,能适配不同文件名。
  2. 自动文件管理:用with语句操作文件,它会在代码块结束后自动关闭文件,避免手动close()可能出现的资源泄漏。
  3. 异常与空值处理:
    • 捕获FileNotFoundError:第一次运行机器人时,reply.txt还没创建,直接返回初始ID(比如0)。
    • 捕获ValueError:如果文件里的内容不是有效整数(比如误写了字符串),也返回初始ID,避免程序崩溃。
    • 先判断内容是否为空,为空时直接返回初始ID,提前规避空字符串转int的错误。

使用示例

调用函数时传入你的文件名即可:

# 读取上次回复的推文ID
last_replied_id = read_last_seen('reply.txt')
# 处理完推文后,存储最新的已回复ID
store_last_seen('reply.txt', latest_tweet_id)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 17:12:22