如何用Python获取文本文件中最后一条数据编号以实现递增记录?
解决文本文件中获取最后一条记录编号的问题
原代码的问题分析
你的代码存在三个核心问题:
- 未判断行中是否存在
#:当find('#')返回-1时,直接索引会触发IndexError - 仅提取
#后的单个字符:无法处理#10这类多位数编号 - 未处理空文件/无编号的场景:文件为空时直接报错
正确实现方案
以下代码可以精准提取所有有效编号,同时兼容空文件、多位数编号等场景:
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
相关产品推荐
相关产品推荐

