YAML 在Python中的應用

2021-09-08 13:23:16 字數 3529 閱讀 8212

程式設計免不了要寫配置檔案,怎麼寫配置也是一門學問。

yaml 是專門用來寫配置檔案的語言,非常簡潔和強大,遠比 json 格式方便。

yaml 語言(發音 /ˈjæməl/ )的設計目標,就是方便人類讀寫。它實質上是一種通用的資料序列化格式。

它的基本語法規則如下:

1、大小寫敏感

2、使用縮排表示層級關係

3、縮排時不允許使用tab鍵,只允許使用空格。

4、縮排的空格數目不重要,只要相同層級的元素左側對齊即可

5、#表示注釋,從這個字元一直到行尾,都會被解析器忽略,這個和python的注釋一樣

yaml 支援的資料結構有三種:

2、陣列:一組按次序排列的值,又稱為序列(sequence) / 列表(list)

3、純量(scalars):單個的、不可再分的值。字串、布林值、整數、浮點數、null、時間、日期

#

######################################字串##############################################

#1、字串預設不使用引號表示

str1: 這是乙個字串

#2、如果字串之中包含空格或特殊字元,需要放在引號之中。

str2: '

內容: *字串'#

3、單引號和雙引號都可以使用,雙引號不會對特殊字元轉義。

str3: '

內容\n字串

'str4:

"content\n string"#

4、單引號之中如果還有單引號,必須連續使用兩個單引號轉義。

s3: '

labor

''s day'#

5、字串可以寫成多行,從第二行開始,必須有乙個單空格縮排。換行符會被轉為空格

strline: 這是一段

多行字串 #

6、多行字串可以使用|保留換行符,也可以使用》摺疊換行

this: |foo

barthat: >foo

bar #

7、+表示保留文字塊末尾的換行,-表示刪除字串末尾的換行。

s4: |foo4

s5: |+foo5

s6: |-foo6

s7: |foo7

#

##################################物件####################

#1、物件的一組鍵值對,使用冒號結構表示。

animal: pets ###

#2、yaml 也允許另一種寫法,將所有鍵值對寫成乙個行內物件

dict1: #

}

#

###################################陣列###################

#1、陣列可以採用行內表示法。

animal: [cat, dog]##

2、一組連詞線開頭的行,構成乙個陣列。

animal1:

-cat

-dog

-goldfish

#

#

###########################復合結構##########################

#物件和陣列可以結合使用,形成復合結構

languages:

-ruby

-perl

-python

websites:

yaml: yaml.org

ruby: ruby-lang.org

python: python.org

perl: use.perl.org#}

db: host: ***

port: 3306user: weibospider

password: ***

db_name: weibo

db_type: mysql#}

#

#########################純量#############################

#1、數值直接以字面量的形式表示

number: 12.30 #

#2、布林值用true和false表示

isset: true #

isset1: false #

3、null用~表示

parent: ~ #

#4、時間採用 iso8601 格式。

time1: 2001-12-14t21:59:43.10-05:00 #

##5、日期採用復合 iso8601 格式的年、月、日表示。

date: 2017-07-31 #

#6、yaml 允許使用兩個感嘆號,強制轉換資料型別。

int_to_str: !!str 123 #

bool_to_str: !!str true #

這裡主要是記錄一下yaml在python語言中的應用。模擬於json庫,yaml庫與其有驚人的相似之處。乙個load方法,乙個dump方法。顧名知義,也比較的好理解。

#

coding:utf-8

import

osimport

sysreload(sys)

sys.setdefaultencoding(

'utf8')

from yaml import

load

config_path = os.path.join(os.path.dirname(__file__), '

tt.yaml')

with open(config_path,'rb

') as f:

cont =f.read()

cf =load(cont)

print cf.get('db'

)#輸出:print

'------------------

'printcf#

輸出:'''

, 'animal1': ['cat', 'dog', 'goldfish'],

'parent': none,

'bool_to_str': 'true',

'db': ,

'number': 12.3,

'websites': ,

'time1': datetime.datetime(2001, 12, 15, 2, 59, 43, 100000),

'languages': ['ruby', 'perl', 'python'],

'animal': ['cat', 'dog'],

'date': datetime.date(2017, 7, 31),

'int_to_str': '123',

'isset': true,

'isset1': false}

'''

參考文件:

YAML 在Python中的配置應用

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!yaml應用總結 yaml是乙個堪比xml,json資料格式的更加方便,簡潔的,易於人眼閱讀的序列化資料格式。在很多的指令碼語言中都有涉及,下面以其在python語言中為例,簡單的記錄一下,以備今後複習所用。這貌似是所有試驗的開場白了,那就是搭建好...

python中yaml檔案的讀寫

coding utf 8 author mr.deng time 2020 3 10 9 21 yaml是乙個專門用來寫配置檔案的語言。1.yaml檔案規則 區分大小寫 使用縮排表示層級關係 使用空格鍵縮排,而非tab鍵縮排 縮排的空格數目不固定,只需要相同層級的元素左側對齊 檔案中的字串不需要使用...

在應用中嵌入Python

翻譯 gashero 前面的章節討論如何擴充套件python,如何生成適合的c庫等。不過還有另一種情況 通過將python嵌入c c 應用以擴充套件程式的功能。python嵌入實現了一些使用python更合適的功能。這可以有很多用途,乙個例子是允許使用者裁減需要的python功能。也可以用於默寫使用...