读取文件时如何精确保留多行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
相关产品推荐
相关产品推荐

