新手开发者求助:推特Bot逐行发《蜜蜂电影》脚本无报错但无输出
问题分析与修复方案
你的代码存在几个关键问题,导致没有执行效果:
核心问题
- 重复打开文件:外层的
while循环每次都会重新打开script.txt,导致每次循环都从文件开头读取,逻辑完全混乱。 - 行读取逻辑冲突:
for word in f已经在逐行遍历文件内容,此时再调用f.readline()会跳过当前行的下一行,导致大量内容被跳过,甚至可能直接读到文件末尾,没有有效内容可发布。 - 未正确处理空行:仅判断
word == '\n'不够可靠,有些空行可能包含空格或制表符,无法被正确跳过。 - 资源未正确释放:直接
open文件后没有关闭,容易引发资源泄漏。 - 缺少必要模块导入:代码中使用了
time.sleep但未导入time模块,这会导致报错(你说无报错可能是代码没执行到这部分,或者你没贴全导入部分)。
修复后的代码
import time # 确保api已完成推特API的认证初始化 with open('script.txt', 'r') as f: for line in f: # 去除行首尾的空白字符(包括换行符) cleaned_line = line.strip() # 跳过空行 if not cleaned_line: continue # 发布推文 api.update_status(cleaned_line) # 间隔2分钟 time.sleep(120)
额外检查点
- 确认你的
api对象已经正确完成推特API的认证(包括API密钥、API密钥密码、访问令牌、访问令牌密码的配置),如果认证失败,API调用会静默失败(无报错但无效果)。 - 如果需要循环重复发布脚本内容,可以在
with语句外添加一层循环,但注意不要每次循环都重新打开文件,比如:
import time while True: with open('script.txt', 'r') as f: for line in f: cleaned_line = line.strip() if not cleaned_line: continue api.update_status(cleaned_line) time.sleep(120) # 可选:全部发布完后等待一段时间再重复 # time.sleep(3600)
内容的提问来源于stack exchange,提问作者GeneralBaconnn
相关产品推荐
相关产品推荐

