如何用Python仅替换文件指定行,保留手动添加内容?
仅替换文件指定行、保留其他内容的实现方案
你的问题核心是当前脚本以写入模式(wt)打开mynewfile.txt时会清空原有内容,导致手动添加的文本丢失。要实现只覆盖mammals = ...这一行,需要先读取文件所有内容,替换目标行后再重新写入,具体实现如下:
解决思路
- 先读取
myfile.txt中的数据,处理成mammals = ["dog", "cat"]格式的目标行 - 检查
mynewfile.txt是否存在:- 若不存在,直接写入目标行
- 若存在,遍历每一行内容,保留非目标行,替换掉以
mammals =开头的行
- 最后将处理后的所有内容重新写入文件
修改后的代码
# 先处理myfile.txt的数据,生成目标行 with open('myfile.txt', 'w') as f: print(response['animals']['mammals'], file=f) with open('myfile.txt', 'r') as f: line_data = f.read().strip() target_line = f"mammals = {line_data.replace(\"'\", '\"')}" # 处理mynewfile.txt的内容 output_lines = [] file_exists = False try: with open('mynewfile.txt', 'r') as f: file_exists = True for line in f: stripped_line = line.strip() # 匹配以mammals = 开头的行,替换成目标行 if stripped_line.startswith('mammals = '): output_lines.append(target_line + '\n') else: output_lines.append(line) except FileNotFoundError: # 文件不存在时直接添加目标行 output_lines.append(target_line + '\n') # 将处理后的内容写入文件 with open('mynewfile.txt', 'w') as fout: fout.writelines(output_lines)
代码说明
- 首先读取
myfile.txt的内容,处理成符合要求的mammals = ["dog", "cat"]格式字符串 - 尝试读取
mynewfile.txt的所有行,遍历过程中替换目标行,其他行原样保留 - 如果文件不存在,直接写入目标行;存在则写入替换后的所有行,这样就不会丢失手动添加的内容
内容的提问来源于stack exchange,提问作者Kikeman26
相关产品推荐
相关产品推荐

