python基礎-PyYaml操作yaml文件

yaml語法

格式


它的基本語法規則如下?
大小寫敏感?
使用縮進表示層級關系?
縮進時不允許使用Tab鍵,只允許使用空格。?
縮進的空格數目不重要,只要相同層級的元素左側對齊即可

YAML 支持的數據結構有三種?
1、對象:鍵值對的集合,又稱為映射(mapping)/ 哈希(hashes) / 字典(dictionary)?
2、數組:一組按次序排列的值,又稱為序列(sequence) / 列表(list)?
3、純量(scalars):單個的、不可再分的值

對象的一組鍵值對,使用冒號結構表示。

animal: pets#或者如下格式
hash: { name: Steve, foo: bar }
  • 1
  • 2
  • 3
  • 4

數組

- Cat
- Dog
- Goldfish #或者如下格式 animal: [Cat, Dog]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

復合結構

languages:- Ruby- Perl- Python 
websites:YAML: yaml.org Ruby: ruby-lang.org Python: python.org Perl: use.perl.org 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

純量純量是最基本的、不可再分的值

        字符串布爾值整數浮點數Null時間日期
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

字符串:以下是5種表現格式

str: 這是一行字符串
str: '內容: 字符串'
s1: '內容\n字符串' s2: "內容\n字符串" str: 'labor''s day' 
  • 1
  • 2
  • 3
  • 4
  • 5

yaml2種寫法

我們來看一個完整的yaml配置文件

數據結構可以用類似大綱的縮排方式呈現,結構通過縮進來表示,連續的項目通過減號“-”來表示,map結構里面的key/value對用冒號“:”來分隔。樣例如下:

house:family:name: Doeparents:- John- Janechildren:- Paul - Mark - Simone address: number: 34 street: Main Street city: Nowheretown zipcode: 12345
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

YAML也有用來描述好幾行相同結構的數據的縮寫語法,數組用’[]’包括起來,hash用’{}’來包括。因此,上面的這個YAML能夠縮寫成這樣:

house:family: { name: Doe, parents: [John, Jane], children: [Paul, Mark, Simone] } address: { number: 34, street: Main Street, city: Nowheretown, zipcode: 12345 }
  • 1
  • 2
  • 3

安裝PyYaml

下載地址https://github.com/yaml/pyyaml?
然后將其lib3\yaml包,放在python安裝包lib包下,然后命令行監測是否安裝成功即可?
這里寫圖片描述

python使用yaml

我們初始化一個yaml配置文件

house:family:name: Doeparents:- John- Janeaddress:number: 34street: Main Street
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
import yaml
f = open('example.ini',encoding="utf-8")
x = yaml.load(f)
print(x) print("---------") aproject = {'name': 'Silenthand Olleander', 'race': 'Human', 'traits': ['ONE_HAND', 'ONE_EYE'] } ret = yaml.dump(aproject) print(ret) aproject = ["a","b","c"] ret = yaml.dump(aproject) print(ret) aproject = ("a","b","c") ret = yaml.dump(aproject) print(ret) aproject = {"a":1,"b":2} ret = yaml.dump(aproject) print(ret) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

輸出內容如下:

E:\python\python_sdk\python.exe E:/python/py_pro/5.configparse.py {'house': {'family': {'name': 'Doe', 'parents': ['John', 'Jane']}, 'address': {'number': 34, 'street': 'Main Street'}}} --------- name: Silenthand Olleander race: Human traits: [ONE_HAND, ONE_EYE] [a, b, c] [a, b, c] {a: 1, b: 2} Process finished with exit code 0

轉載于:https://www.cnblogs.com/nkwy2012/p/9291740.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452030.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452030.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452030.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

N1CTF 塞題vote分析

N1CTF 塞題vote分析:這個題是一個uaf的漏洞題,我們先看看漏洞(如下圖),這兩部分是很明顯的對比的啊。當單獨的一個count數組的數據和堆里的數據相同時候,就會釋放堆,堆釋放后的count還會有指針指…

String.valueOf()方法與toString()方法的區別

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 1. 兩者都是把ObJect對象轉化為String 類型。 2.string.valueof()方法有作非空判斷,在內部也是調用的toString()方法&#…

網絡爬蟲--11.XPath和lxml

文章目錄一. XML1. XML 和 HTML 的區別2. XML文檔示例3. HTML DOM 模型示例4. XML的節點關系二. 什么是XPath?1. 選取節點2. 謂語(Predicates)3. 選取未知節點4. 選取若干路徑5. XPath的運算符三. lxml庫1. 初步使用2. 文件讀取四. XPath實例…

實體與屬性間的劃分原則

為了簡化E-R圖的處置,現實世界的事物能作為屬性對待的,盡量作為屬性對待。 兩條準則: (1)作為屬性,不能再具有需要描述的性質。屬性必須是不可分的數據項,不能包含其他屬性。 (2&…

編程開發之--java多線程學習總結(5)

4、對繼承自Runnable的線程進行鎖機制的使用 package com.lfy.ThreadsSynchronize;import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock;public class TicketSellSolution4 implements Runnable {private static int num 50;//創建一個…

軟件測試不是一個功能

今天在工作中我對一個同事說,PyDev 2.5.0現在對TDD(測試驅動開發)提供了很酷的支持了。我并不是一個對TDD很癡迷的倡導者,對其它事物也一樣,但仍不免激起了一場討論。這個家伙,讓我們暫叫他約翰&#xff0c…

Linux 操作系統基礎知識

1.操作系統總體介紹 ?CPU: 就像人的大腦,主要負責相關事情的判斷以及實際處理的機制。查詢指令: cat /proc/cpuinfo?內存: 大腦中的記憶區塊,將皮膚、眼睛等所收集到的信息記錄起來的地方,以供CPU進行判斷…

Transaction 那點事兒,Spring事務管理

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 Transaction 也就是所謂的事務了,通俗理解就是一件事情。從小,父母就教育我們,做事情要有始有終&…

網絡爬蟲--12.【XPath實戰】獲取百度貼吧中的圖片

用XPath來做一個簡單的爬蟲,我們嘗試爬取某個貼吧里的所有帖子,并且將該這個帖子里每個樓層發布的圖片下載到本地。 #codingutf-8 import requests from lxml import etree import jsonclass Tieba:def __init__(self,tieba_name):self.tieba_name tie…

合并分ER圖產生的沖突

合并分E-R圖 各個局部應用所面向的問題不同,各個子系統的E-R圖之間必定會存在許多不一致的地方,稱之為沖突。 子系統E-R圖之間的沖突主要有三類: ①屬性沖突 ②命名沖突 ③結構沖突①屬性沖突 屬性域沖突,即屬性值的類型、取值范圍…

8.類定義、屬性、初始化和析構

類定義 類 是一個獨立存放變量(屬性/方法)的空間 封裝: 類可以把各種對象組織在一起,作為類的屬性,通過 . (點)運算符來調用類中封裝好的對象 屬性: 變量在類中稱為屬性,但是類中的屬性不僅僅只包含變量&#x…

GPL以及Copyleft協議使用率下降明顯

根據最新的協議數據分析,不光是GPL,另外一些copyleft(AGPL,LGPL 等等)協議的使用率在不斷下降,并且下降的速度越來越快。 這結果是在意料之中的,因為GPL非常的復雜。越來越多的個人和企業將選擇…

概念模型和關系模型

ER模型(邏輯模型) ER模型的基本元素是:實體、聯系和屬性 實體:是一個數據對象,指應用中可以區別的客觀存在的事物。(ER模型中的實體往往是指實體集) 實體集:指同一類實體構成的集合…

iOS AutoLayout使用技巧

關于ContentCompressionResistance, ContentHugging運用 如下圖效果圖,兩個Label并列在同一排上,左邊label自適應,右邊label(紅色)要使得內容全部展示,如果左邊label內容很少,那么右…

網絡爬蟲--13.數據提取之JSON與JsonPATH

文章目錄一. 前言二. JSON三. json.loads()四. json.dumps()五. json.dump()六. json.load()七. JsonPath八. JsonPath與XPath語法對比九. 案例分析一. 前言 JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式,它使得人們很容易的進行閱讀和編寫。同時…

vs2017生成sqlserver 2017項目出現.Net SqlClient Data Provider: Msg 10343

一、使用vs2017生成sqlserver 2017項目時由于添加的程序集(CLR集成,可以參考后面給出的鏈接進行理解) ,由于安全權限的配置不正確引發以下的問題: SQL72014: .Net SqlClient Data Provider: Msg 10343, Level 14, State 1, Line 1 針對帶有 SAFE 或 EXT…

數據庫系統常用的存取方法

1. B樹索引存取方法 2. Hash索引存取方法 3. 聚簇存取方法

創建型模式二:工廠方法模式

1. 工廠模式介紹 工廠模式(Factory Pattern)的意義就跟它的名字一樣,在面向對象程序設計中,工廠通常是一個用來創建其他對象的對象。工廠模式根據不同的參數來實現不同的分配方案和創建對象。 在工廠模式中,我們在創建…

spring 的4種事務管理(1種編程式+3種聲明式)

見:http://blog.csdn.net/sinat_25926481/article/details/48208619 Spring的4種事務管理(1種編程式事務三種聲明事務) 一、Spring事務的介紹 二、編程式事務xml的配置 注入后直接在service層調用模板的方法使用 三、基于AOP方式的聲明式事務…

如何創造出更優秀的用戶體驗?

對于互聯網公司來說,用戶體驗起到至關重要的作用,能否給用戶留下深刻的印象;開發出的產品是否實用、易用?等等這些都是開發者必將思考的話題。當有用性一樣的時候,大家的競爭重點就是易用性了,這就是互聯網…