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

读取文件时如何精确保留多行YAML字符串的原始格式

可行解决方案

1. 纯文本直接读写(最可靠)

完全绕过YAML/JSON解析库,直接把API响应当作普通字符串写入文件,读取时也直接读取原始内容,从根源避免转义问题。

保存代码:

# 假设api_response是你拿到的多行YAML字符串
with open('dashboard_response.txt', 'w', encoding='utf-8') as f:
    f.write(api_response)

读取代码:

with open('dashboard_response.txt', 'r', encoding='utf-8') as f:
    raw_content = f.read()
# raw_content就是和API返回完全一致的原始字符串

这种方式不会对任何字符做转义或修改,完美保留原始格式,操作最简单直接。

2. 二进制模式读写(适配编码敏感场景)

如果担心文本模式下的编码转换问题,可以用二进制模式读写,确保字节层面完全一致:

保存代码:

with open('dashboard_response.bin', 'wb') as f:
    f.write(api_response.encode('utf-8'))

读取代码:

with open('dashboard_response.bin', 'rb') as f:
    raw_content = f.read().decode('utf-8')

3. 用ruamel.yaml保留原始引号(需YAML结构操作时用)

如果需要后续对YAML内容进行结构操作,同时要保留原始引号格式,可以配置ruamel.yaml的preserve_quotes参数:

from ruamel.yaml import YAML

yaml = YAML()
yaml.preserve_quotes = True  # 关键配置,保留原始引号

# 加载API响应字符串
data = yaml.load(api_response)

# 保存时保留原始引号格式
with open('dashboard.yaml', 'w', encoding='utf-8') as f:
    yaml.dump(data, f)

这种方式能在解析YAML结构的同时,尽量保留原始的引号写法(包括空字符串的''),但需确保API返回的YAML格式是合法的。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 08:43:31