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

如何让Python为每次运行生成的学习时段日志条目添加序列号

嘿,作为编程新手遇到这种找不到现成资料的针对性需求,确实挺让人头疼的!我来给你一步步拆解怎么实现每次运行生成带连续序列号的学习时段日志~

实现每次运行生成带序列号的学习日志(Python示例)

我用Python来做示例,因为它对新手友好,处理文件和日期也很方便。

核心思路

每次运行程序时,我们要搞定这几件事:

  • 生成当前的日期、时间等你需要的日志字段
  • 检查有没有已存在的日志文件:如果有就读取最后一条的序列号,新条目加1;如果是第一次运行,序列号从1开始
  • 把新生成的日志条目追加到文件里(用CSV格式,后续查看整理都方便)

完整代码实现

先看可直接运行的代码,后面再拆解细节:

import csv
from datetime import datetime

def add_study_log():
    # 日志文件名,你可以改成自己喜欢的名字
    log_filename = "my_study_logs.csv"
    
    # 获取当前日期和时间,格式化成易读的字符串
    today_date = datetime.now().strftime("%Y-%m-%d")
    current_time = datetime.now().strftime("%H:%M:%S")
    
    # 这里可以自定义日志字段,示例里加了学习内容和时长,你可以按需修改
    study_subject = input("输入本次学习的内容:")
    study_minutes = input("输入本次学习时长(分钟):")
    
    # 计算新条目的序列号
    try:
        # 读取已有日志文件
        with open(log_filename, 'r', newline='', encoding='utf-8') as log_file:
            csv_reader = csv.reader(log_file)
            # 跳过表头行
            next(csv_reader)
            # 把所有日志行转成列表,方便取最后一条
            all_logs = list(csv_reader)
            if all_logs:
                # 最后一条的第一个元素是序列号,转成整数加1
                last_serial = int(all_logs[-1][0])
                new_serial = last_serial + 1
            else:
                # 文件存在但没有内容(比如刚创建的空文件),从1开始
                new_serial = 1
    except FileNotFoundError:
        # 文件不存在,第一次运行,序列号从1开始
        new_serial = 1
    
    # 组装新的日志条目
    new_log_entry = [new_serial, today_date, current_time, study_subject, study_minutes]
    
    # 写入日志文件(追加模式,不存在就自动创建)
    with open(log_filename, 'a', newline='', encoding='utf-8') as log_file:
        csv_writer = csv.writer(log_file)
        # 如果是第一次创建文件,先写表头
        if new_serial == 1:
            csv_writer.writerow(["序列号", "日期", "时间", "学习内容", "学习时长(分钟)"])
        # 写入新条目
        csv_writer.writerow(new_log_entry)
    
    print(f"日志添加成功!本次条目序列号:{new_serial}")

if __name__ == "__main__":
    add_study_log()

代码细节解释

  • 日期时间处理:用datetime.now()获取当前系统时间,strftime()把时间转成年-月-日和时:分:秒的格式,比原始时间戳好读多了
  • 序列号自动递增:用try-except捕获文件不存在的情况,第一次运行自动创建文件并写表头;如果文件存在,就读取所有日志行,取最后一条的序列号加1,保证序号不会断
  • 日志写入:用'a'模式打开文件,这样每次都是追加内容,不会覆盖之前的日志;指定utf-8编码是为了避免中文乱码的问题
  • 自定义字段:示例里的学习内容、时长是手动输入的,你可以改成自动计算(比如记录程序启动到关闭的时长),或者加其他字段比如学习状态,完全按你的需求来

运行效果

  • 第一次运行:会提示你输入学习内容和时长,然后生成my_study_logs.csv文件,里面有表头和第一条序列号为1的日志
  • 之后每次运行:程序会自动读取已有日志的最后序列号,加1生成新条目,直接追加到文件末尾,完全不用你手动管序号的事

这样就完美解决你要的“每次运行生成带序列号的学习日志”需求啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:17:52