如何使用Python在文件指定位置插入一行内容?
在含'nail'的行后插入'hammer'的代码修正方案
原代码问题分析
原代码存在两处冗余/潜在问题:
line = line.replace(line, line+'\n'+'hammer'+'\n')属于无效操作,直接对line拼接内容即可,无需使用replace。- 结合
fileinput的inplace模式,print()会自动追加换行符,手动添加\n可能导致多余空行。
修正后的代码方案(推荐)
import fileinput file_name = '/Users/xxxx/PycharmProjects/pythonProject/HWDataList.txt' for line in fileinput.FileInput(file_name, inplace=True): # 移除行尾的换行符,避免print重复添加 stripped_line = line.rstrip('\n') print(stripped_line) # 匹配到'nail'时,在下一行插入'hammer' if 'nail' in stripped_line: print('hammer')
另一种简洁写法
如果希望保留原行的换行符(避免处理最后一行无换行的情况),可以这样写:
import fileinput file_name = '/Users/xxxx/PycharmProjects/pythonProject/HWDataList.txt' for line in fileinput.FileInput(file_name, inplace=True): # 直接打印原行,不追加额外换行 print(line, end='') # 匹配到'nail'时插入新行 if 'nail' in line: print('hammer')
效果验证
执行上述代码后,原文件内容会变为:
xxxx yyyy zzzzz nail hammer kkkk jjjjj
完全符合预期需求。
内容的提问来源于stack exchange,提问作者Santhosh Kumar
相关产品推荐
相关产品推荐

