Python开发Discord机器人读取txt文件仅返回空末行问题求助
问题根因
- 执行
jokes.readlines()操作后,文件读取指针已经移动到文件末尾,后续再调用jokes.read()只能读取到空内容,两种读取方式选其一即可,不需要同时调用 with上下文管理器会在代码块执行结束后自动关闭文件,额外加的jokes.close()属于冗余代码,无需保留- 现有代码仅执行了读取逻辑,没有将删除指定行后的内容回写到文件中,无法实现删除笑话的功能
修正后的完整功能代码
@client.command() async def clearjoke(ctx, l=1): joke_path = working_directory / 'txt files/Jokes.txt' # 读取所有笑话行内容 with open(joke_path, 'r', encoding='utf-8') as f: lines = f.readlines() # 校验行号合法性 if l < 1 or l > len(lines): await ctx.send(f"错误:行号{l}不存在,当前共有{len(lines)}条笑话") return # 删除指定行(用户输入行号从1开始,列表索引从0开始,因此要减1) del lines[l-1] # 将修改后的内容回写文件 with open(joke_path, 'w', encoding='utf-8') as f: f.writelines(lines) await ctx.send(f'已删除第{l}行的笑话!')
内容的提问来源于stack exchange,提问作者Charles Hecker
相关产品推荐
相关产品推荐

