如果 else 语句似乎无法正确执行

If else statement seems to fail executing correctly

我有一个 discord Bot,我想在其中实现自己的日志记录系统。这里的问题是我检查是否要检查机器人是否在上一个日志中关闭,它检测到它但仍然做错了我真的不知道是什么。

这是相关代码,添加了一些用于调试的打印:

for file in get_log_files(path):  # get_log_files yields all log files in the path
    with open(path+file, "r", encoding="cp1252") as f:
         print(not f.read().endswith('Bot wird heruntergefahren'))
         if not f.read().endswith('Bot wird heruntergefahren'):
            return file
         else: print(1)

如果我执行我的 bot,它在启动时通过登录 on_ready 这个函数运行,它会正确读取最后一个日志,如果之前关闭,打印出 False,如果不是 True。问题来了:

无论打印了哪两个,它都不会在之后打印 1

这里的问题是您调用了两次 f.read(),因此第二次读取将 return 一个空字符串,因为在第一次读取后已到达文件末尾。

您可以做的是在打印之前将 f.read().endswith('Bot wird heruntergefahren') 的输出保存在一个变量中,并在您的条件下使用它。