yaml读取写入常见错误 (‘cannot represent an object‘, 117)

错误一:yaml.representer.RepresenterError: (‘cannot represent an object’, 117)
在这里插入图片描述
出现这个问题一直没找到原因,后面把yaml.safe_dump直接替换成yaml.dump,确实能保存,但出现乱码:
在这里插入图片描述
放弃yaml.dump,又切回yaml.safe_dump。后面发现它只支持基本的数据类型,对于自定义对象或某些复杂对象(如 NumPy 数组、自定义类实例等),不知道如何序列化。

检查序列,确实存在数组:
在这里插入图片描述
改成intlist即可,具体可以参考下面的代码:

# 对象定义自定义的表示器(representer),序列化自定义对象####################
# numpy类型
import yaml
import numpy as npdef numpy_representer(dumper, data):return dumper.represent_list(data.tolist())yaml.add_representer(np.ndarray, numpy_representer)
data = {'array': np.array([1, 2, 3])}
with open('output.yaml', 'w') as f:yaml.dump(data, f)####################
# class类型
import yaml
class MyClass:def __init__(self, value):self.value = valuedef myclass_representer(dumper, data):return dumper.represent_scalar('tag:yaml.org,2002:str', str(data.value))yaml.add_representer(MyClass, myclass_representer)
data = {"my_object": MyClass(117),"other_data": [1, 2, 3]}
with open('output.yaml', 'w') as f:yaml.dump(data, f)

错误二:yaml.composer.ComposerError: expected a single document in the stream

在用yaml.dump写入**.yaml文件时,会用 “—**” 做分隔,如下所示:

# 文档1
key1: value1
---
# 文档2
key2: value2

直接用yaml.load读取会报错:
在这里插入图片描述
是因为PyYAML 库,默认情况下 yaml.safe_load()yaml.load() 只会加载第一个文档。

需要加载所有文档,可以使用 yaml.safe_load_all()yaml.load_all()

import yaml# 对于单个文档
with open('file.yaml', 'r') as f:data = yaml.safe_load(f)  # 只加载第一个文档# 对于多个文档
with open('file.yaml', 'r') as f:documents = list(yaml.safe_load_all(f))  # 加载所有文档chain_map = ChainMap(*documents)merged_dict = dict(chain_map)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/diannao/86448.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每日一令:Linux 极简通关指南 - 汇总

专栏列表 💻 每日一令:Linux 极简通关指南 (25篇) 【基础】每天掌握一个Linux命令 - nsenter:深入容器与命名空间的利器 发布于 2025-06-08 22:27:04【基础】 每天掌握一个Linux命令 - journalctl:系统日志管理的得力助手 发布于…

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术点解析

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术点解析 第一轮:基础概念问题 请解释Spring框架的核心容器是什么?它的作用是什么? 程序员JY回答:Spring框架的核心容器是IoC容器(控制反转…

渗透测试服务如何全方位评估企业安全状况并揭示潜在缺陷?

渗透测试服务通过模拟攻击行为,对企业整体安全状况进行全方位评估,旨在揭示潜在的安全缺陷并制定相应的修复措施。以下为渗透测试服务报告的核心内容。 测试类型适配 外部渗透测试旨在模仿外部网络攻击者,尝试突破企业网络安全防线&#xf…

SwiftUI 数据绑定与视图更新(@State、@ObservedObject、@EnvironmentObject)

引言 在 SwiftUI 中,界面并不是通过手动刷新来更新的,而是由状态驱动的。当状态发生变化,SwiftUI 会自动识别哪些视图需要重绘,从而保持 UI 与数据的一致性。这种声明式的方式大大简化了界面开发的流程,但也带来一个问…

21-Oracle 23 ai-Automatic SQL Plan Management(SPM)

小伙伴们,有没有迁移数据库完毕后或是突然某一天在同一个实例上同样的SQL, 性能不一样了、业务反馈卡顿、业务超时等各种匪夷所思的现状。 于是SPM定位开始,OCM考试中SPM必考。 其他的AWR、ASH、SQLHC、SQLT、SQL profile等换作下一个话题…

[Linux] 命令行管理文件

目录 FHS 文件路径导航 ls命令 tree命令 stat命令 touch命令 命令行管理文件 mkdir命令 cp命令 mv命令 rm和rmdir命令 软链接 硬链接 软连接硬链接区别 shell扩展匹配文件 FHS FHS采用树形结构组织文件,定义了系统中每个区域的用途、所需要的最小构…

自动化过程中,如何定位一闪而过的toast?

MutationObserver实战:动态捕获页面Toast消息的终极解决方案 一、代码全景解析 const observer new MutationObserver((mutations) > {// 回调函数主体... });observer.observe(document.body, {childList: true,subtree: true });核心组件解析 组件作用重要…

基于 Three.js 的数字雨波纹效果技术解析

文章目录 一、基础环境搭建与 Three.js 引入​二、场景与相机设置​三、后期处理:光晕效果的实现​四、纹理创建:定制雨滴、波纹和水花外观​五、粒子系统:模拟雨滴下落与交互​1,雨滴粒子系统​2,波纹与水花系统​六、动画循环与交互响应​本文将深入剖析一段实现该效果的…

联想拯救者R9000P 网卡 Realtek 8852CE Ubuntu/Mint linux 系统睡眠后,无线网卡失效

联想拯救者R9000P 网卡型号 Realtek PCle GbE Family Controller Realtek 8852CE WiFi 6E PCI-E NIC 系统版本 Ubuntu 24.04 / mint 22.1 问题现象 rtw89_8852ce,Link is Down,xtal si not ready,mac init fail,xtal si not …

Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解

文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一:HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二:Floyd 快慢指针法(…

安宝特科技丨Pixee Medical产品获FDA认证 AR技术赋能骨科手术智能化

法国医疗科技企业Pixee Medical宣布,其研发的智能骨科手术导航系统 Knee NexSight 解决方案正式通过美国食品药品监督管理局(FDA)510(k)认证,标志着增强现实(AR)技术在医疗领域的商业化应用迈出关键一步。 …

操作系统的概念,功能和目标

小懒来了! 操作系统学习正式开始,day1是小懒O! Using blogs to organize and understand knowledge is a good way, lets learn, operating systems Chapter 1,Lets look at it (一)预备知识 一.什么是接口 1.假设我…

STM32使用水位传感器

1.1 介绍: 水位传感器专为水深检测而设计,可广泛用于感应降雨,水位,甚至液体泄漏。当将水位传感器放入水中时,水位没过铜线越多模拟值越大,读取水深传感器模块的模拟值,在串口打印出来&#xf…

Spring事务传播机制有哪些?

导语: Spring事务传播机制是后端面试中的必考知识点,特别容易出现在“项目细节挖掘”阶段。面试官通过它来判断你是否真正理解事务控制的本质与异常传播机制。本文将从实战与源码角度出发,全面剖析Spring事务传播机制,帮助你答得有…

相机Camera日志实例分析之一:相机Camx【前置慢动作分辨率切换720P、1080P录制】单帧流程日志详解

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 1、打…

OpenHarmony标准系统-HDF框架之I2C驱动开发

文章目录 引言I2C基础知识概念和特性协议,四种信号组合 I2C调试手段硬件软件 HDF框架下的I2C设备驱动案例描述驱动Dispatch驱动读写 总结 引言 I2C基础知识 概念和特性 集成电路总线,由串网12C(1C、12C、Inter-Integrated Circuit BUS)行数据线SDA和串…

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…

数据库优化实战分享:高频场景下的性能调优技巧与案例解析

在实际开发与生产运维中,数据库的性能瓶颈往往是影响系统响应速度和用户体验的关键因素。尤其是在高并发访问、海量数据处理、复杂查询逻辑等高频场景下,数据库优化不仅仅是“锦上添花”,更是“雪中送炭”。本篇博文将结合实际项目经验&#…

Python importlib 动态加载

文章目录 1. importlib 库 概述2. 导入模块(import_module())2.1. 导入已安装的模块2.2. 导入子模块2.3 通过字符串变量导入模块 3. 重新加载模块(reload())4. 检查模块是否存在(find_spec())5. 获取模块路…

(1-6-4) Java IO流实现文件的读取与写入

目录 0.前述概要 1. File类 1.1 概述 1.2 File的重要方法 1.3 java.io 1.3.1 四种抽象类 1.3.2 流 1.3.3 其他常用 I/O 流 2. 字节输入流(InputSteam) 2.1 关系类图 2.2 应用实现 3. 字节输出流(OutputStream) 3.1 …