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
相关产品推荐
相关产品推荐

