Python操作txt文件删除指定前N行时代码执行结果异常排查求助
问题原因
- 你的判断条件逻辑完全错误:
len(id)返回值为3,[0, len(id)]实际是仅包含0、3两个元素的列表,所以只会排除索引为0(对应文件第1行)和索引为3(对应文件第4行)的内容,和你要删除前3行的需求不符。 enumerate默认从0开始计数,要删除前N行对应的索引范围是0 到 N-1,本次N=3对应索引0、1、2,你原有的判断逻辑根本没有覆盖这个范围。
解决方法
方法1:直接切片截取(最高效)
不需要循环判断,直接截取指定位置之后的行写入即可,代码如下:
id=[[''],[''],['']] delete_num = len(id) with open('Id.txt','r') as f: lines = f.readlines() with open('Id.txt','w') as f: # 直接保留从第delete_num个索引开始的所有行,即删除前delete_num行 f.writelines(lines[delete_num:])
方法2:修改原有循环逻辑
如果要保留循环写法,调整判断条件即可:
id=[[''],[''],['']] delete_num = len(id) lines=[] with open('Id.txt','r') as f: lines=f.readlines() with open('Id.txt','w') as f: for number,line in enumerate(lines): # 仅写入索引大于等于要删除行数的内容 if number >= delete_num: f.write(line)
内容的提问来源于stack exchange,提问作者bot_der_4
相关产品推荐
相关产品推荐

