Python代码误删除首行外所有行?原因分析及修复方法
问题原因
- 循环提前终止:你在
for循环内部直接使用了return语句,导致循环只执行一次就终止函数。不管第一行是否匹配目标内容,后续所有行都没机会被处理和写入文件,最终文件里只剩首行。 - 类型不匹配:你把
b定义成了列表[f'{number_input};{code_input}'],但每行处理后是字符串类型,字符串和列表永远不可能相等,所以if条件永远成立,第一行必然被写入,随后直接终止函数。
修复方案
- 将
b改为字符串类型,去掉列表包裹; - 把
return语句移出循环,用变量标记是否成功删除目标行,循环结束后再返回结果; - 遍历所有行,仅跳过匹配的目标行,其余行正常写入文件。
修复后的代码:
def give_back(): number_input = input('What is ur number?') code_input = input('Enter the code corresponding to your number.') # 改为字符串,和行内容类型统一 b = f'{number_input};{code_input}' deleted = False with open('fa_kluizen.txt', 'r') as f: x = f.readlines() with open('fa_kluizen.txt', 'w') as f: for line in x: stripped_line = line.strip('\n').strip() if stripped_line == b: # 匹配到目标行,不写入并标记删除状态 deleted = True else: # 非目标行正常写入 f.write(line) # 循环结束后返回最终结果 return deleted
内容的提问来源于stack exchange,提问作者pipo
相关产品推荐
相关产品推荐

