如果 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')
的输出保存在一个变量中,并在您的条件下使用它。
我有一个 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')
的输出保存在一个变量中,并在您的条件下使用它。