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

使用ruamel.yaml导出YAML时如何避免文件末尾自动添加换行符

ruamel.yaml导出YAML去掉末尾换行的实现方法

ruamel.yaml默认执行dump操作时会自动在输出内容末尾追加换行符,若不需要该换行可通过以下方式实现:

  • 方案1:先将YAML内容输出到内存流裁剪后再写入文件
    该方案兼容性强,适配所有版本的ruamel.yaml,示例代码如下:
from ruamel.yaml import YAML
from io import StringIO

# YAML配置保持不变
yaml = YAML(typ="rt")
yaml.default_flow_style = False
yaml.explicit_start = False
yaml.indent(mapping=2, sequence=4, offset=2)

rip = {"rip_routes": ["23.24.10.0/15", "23.30.0.10/15", "50.73.11.0/16", "198.0.0.0/16"]}
file = 'test.yaml'

# 先导出到内存流,去掉末尾换行后再写入本地文件
stream = StringIO()
yaml.dump(rip, stream)
output_content = stream.getvalue().rstrip('\n')
with open(file, "w", encoding="utf-8") as f:
    f.write(output_content)
  • 方案2:修改YAML实例的行尾配置
    如果使用的是0.17版本及以上的ruamel.yaml,可以直接修改eol属性简化操作:
from ruamel.yaml import YAML

yaml = YAML(typ="rt")
yaml.default_flow_style = False
yaml.explicit_start = False
yaml.indent(mapping=2, sequence=4, offset=2)
# 直接设置行尾为空,禁止末尾追加换行
yaml.eol = ''

rip = {"rip_routes": ["23.24.10.0/15", "23.30.0.10/15", "50.73.11.0/16", "198.0.0.0/16"]}
file = 'test.yaml'
with open(file, "w", encoding="utf-8") as f:
    yaml.dump(rip, f)

注意:YAML官方规范允许文件末尾存在 trailing newline,绝大多数工具解析YAML时会自动忽略该换行,仅当业务场景有强制要求时再做以上修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:18:02