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

Python开发Twitter机器人int()转换报错转float无效如何解决

问题原因

报错核心是文件读取路径写混了:
你代码本意是读取记录上次已发推文位置的数字序号,但实际打开的是存放所有名言内容的Quotes.csv文件。从报错信息可以看到,f.read()读出来的内容是csv的表头QUOTE;AUTHOR;GENRE和后续的名言文本,完全不是纯数字内容。这也是你尝试把值转float依然报错的原因——待转换的内容从头到尾就不是数字格式,和转int还是float没有关系,自然无论怎么转数字类型都会触发值转换错误。
对照你后续的写入逻辑可以发现,你每次发完推文是把序号写入同目录下的latest.txt文件,前面读取序号时路径写错成了Quotes.csv,才导致这个问题。

修复步骤
  • 修正读取序号的文件路径,改为读取latest.txt而非Quotes.csv
  • 增加兜底判断:第一次运行程序时latest.txt还没生成,或者文件内容为空/被篡改时,默认从第0条开始发,避免再次启动报错
  • 修正raw字符串的路径写法:加了r前缀的路径字符串不需要手动转义反斜杠,多余的双反斜杠可能触发路径找不到的问题
修正后的对应代码片段

把原来读取latest_tweet_number的代码替换为以下内容即可:

import os
latest_tweet_number = 0
latest_record_path = r'C:\Users\Kweronda\Desktop\tweek\latest.txt'

# 只有记录文件存在时才读取内容
if os.path.exists(latest_record_path):
    with open(latest_record_path, 'r', encoding='utf-8') as f:
        file_content = f.read().strip()
        # 仅当内容是纯数字时做类型转换
        if file_content.isdigit():
            latest_tweet_number = int(file_content)

print(latest_tweet_number)

额外注意:如果你用的是4.0以上版本的tweepy,wait_on_rate_limit_notify参数已经被移除,初始化API时把这个参数删掉,只保留wait_on_rate_limit=True即可,否则会触发参数错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:45:50