You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何if条件为真却仅执行else分支?俯卧撑日志代码疑问

问题分析:俯卧撑日志程序日期判断输出False的原因

问题场景

我正在开发一个俯卧撑日志程序,需要判断其生成的文本文件中是否包含当前日期,以此决定是在计数列表中追加内容,还是新增一行写入新日期。

测试代码如下:

from datetime import date

with open("Push-Ups-Log.txt", "a+") as Counter:
    AllLogs = Counter.read()
    if str(date.today()) in AllLogs:
        print("True")
    else:
        print("False")

当前文本文件内容:

1. 2022-07-21

Python运行输出:

False

原因分析

核心问题出在**a+模式打开文件时的指针位置**:

  • 使用a+模式打开文件时,文件指针默认指向文件末尾。此时直接调用read()方法,会从末尾开始读取内容,自然读不到任何数据,AllLogs会是空字符串。
  • 空字符串中不可能包含目标日期,所以无论文件实际内容是什么,都会输出False。

额外说明:如果你的测试场景中当前日期确实是2022-07-21,那修正指针位置后就能得到正确结果;如果当前日期不是这个值,输出False属于正常逻辑。

解决方案

在读取文件内容前,调用seek(0)将文件指针移到文件开头:

from datetime import date

with open("Push-Ups-Log.txt", "a+") as Counter:
    Counter.seek(0)  # 移动指针到文件开头
    AllLogs = Counter.read()
    if str(date.today()) in AllLogs:
        print("True")
    else:
        print("False")

内容的提问来源于stack exchange,提问作者XboxOneSogie720

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 15:06:16