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
繁體地址,請注明出處:http://hk.pswp.cn/diannao/86448.shtml
英文地址,請注明出處:http://en.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 …