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

如何用Python获取文本文件中最后一条数据编号以实现递增记录?

解决文本文件中获取最后一条记录编号的问题

原代码的问题分析

你的代码存在三个核心问题:

  1. 未判断行中是否存在#:当find('#')返回-1时,直接索引会触发IndexError
  2. 仅提取#后的单个字符:无法处理#10这类多位数编号
  3. 未处理空文件/无编号的场景:文件为空时直接报错

正确实现方案

以下代码可以精准提取所有有效编号,同时兼容空文件、多位数编号等场景:

record_list = []
try:
    # 用with语句自动管理文件,避免资源泄漏
    with open('test.txt', 'r') as text_file:
        for line in text_file:
            line = line.strip()
            # 仅处理以#开头的行(匹配你的记录格式)
            if line.startswith('#'):
                # 提取#之后的内容并去除空白
                num_str = line[1:].strip()
                # 验证提取的内容是纯数字,避免格式错误的行干扰
                if num_str.isdigit():
                    record_list.append(int(num_str))
except FileNotFoundError:
    # 文件不存在时,视为无记录
    pass

# 计算新编号
if record_list:
    new_number = max(record_list) + 1
else:
    # 空文件/无记录时,从1开始
    new_number = 1

保存新数据的示例

获取新编号后,可通过以下代码将用户输入的数据追加到文件:

# 获取用户输入的多行数据
print("请输入新数据(输入完成后按Ctrl+D结束,Windows按Ctrl+Z):")
new_data = []
while True:
    try:
        line = input()
        new_data.append(line)
    except EOFError:
        break
new_data_content = '\n'.join(new_data)

# 追加写入文件
with open('test.txt', 'a') as text_file:
    text_file.write(f"#{new_number}\n")
    text_file.write(new_data_content + "\n")
    text_file.write("-------------\n")

代码优势说明

  • 精准匹配编号行:仅处理以#开头的行,避免无关内容干扰
  • 支持多位数编号:提取#后所有数字字符,兼容#1到#999等格式
  • 鲁棒性强:处理文件不存在、空文件、格式错误行等异常场景
  • 资源安全:使用with语句自动关闭文件,避免资源泄漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 04:05:37