You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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)

代码说明

  1. 首先读取myfile.txt的内容,处理成符合要求的mammals = ["dog", "cat"]格式字符串
  2. 尝试读取mynewfile.txt的所有行,遍历过程中替换目标行,其他行原样保留
  3. 如果文件不存在,直接写入目标行;存在则写入替换后的所有行,这样就不会丢失手动添加的内容

内容的提问来源于stack exchange,提问作者Kikeman26

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 17:55:30