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

如何使用Python批量替换多个YAML文件中的多行指定内容?

Python批量修改YAML文件结构的实现方案

1. 先装依赖

处理YAML文件需要用到pyyaml库,通过pip安装:

pip install pyyaml

2. 核心实现代码

下面的脚本可以批量遍历指定目录下的所有YAML文件,把每个文件里的backend结构从serviceName/servicePort改成services列表格式:

import yaml
import os

def modify_yaml_file(file_path):
    # 读取YAML文件
    with open(file_path, 'r', encoding='utf-8') as f:
        data = yaml.safe_load(f)
    
    # 遍历paths下的每个条目
    if 'http' in data and 'paths' in data['http']:
        for path_item in data['http']['paths']:
            if 'backend' in path_item:
                backend = path_item['backend']
                # 检查是否有需要转换的字段
                if 'serviceName' in backend and 'servicePort' in backend:
                    # 构建新的services结构(注意YAML格式要求短横线后加空格)
                    backend['services'] = [
                        {'Name': backend['serviceName']},
                        {'Port': backend['servicePort']}
                    ]
                    # 删除旧字段
                    del backend['serviceName']
                    del backend['servicePort']
    
    # 写回修改后的内容,保持原格式风格
    with open(file_path, 'w', encoding='utf-8') as f:
        yaml.dump(data, f, sort_keys=False, indent=2)

def batch_modify_yaml_files(dir_path):
    # 遍历目录下所有YAML文件
    for root, _, files in os.walk(dir_path):
        for file in files:
            if file.endswith(('.yaml', '.yml')):
                file_path = os.path.join(root, file)
                print(f"正在处理文件: {file_path}")
                modify_yaml_file(file_path)

# 替换成你的YAML文件所在目录
target_dir = './your-yaml-files'
batch_modify_yaml_files(target_dir)

3. 注意事项

  • 脚本里的indent=2是保持缩进为2空格,和你示例格式匹配,可按需调整
  • 你给出的示例输出里-Name和-Port是YAML格式错误,正确写法是- Name和- Port,脚本已按标准格式生成
  • 运行前建议备份所有YAML文件,避免意外修改
  • 如果你的YAML有更复杂的嵌套结构,可根据实际情况微调遍历逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:50:33