YAML 在Python中的配置應用

2021-09-30 17:09:36 字數 3045 閱讀 6593

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!

yaml應用總結

yaml是乙個堪比xml,json資料格式的更加方便,簡潔的,易於人眼閱讀的序列化資料格式。在很多的指令碼語言中都有涉及,下面以其在python語言中為例,簡單的記錄一下,以備今後複習所用。

這貌似是所有試驗的開場白了,那就是搭建好本次試驗的環境。因為python解析的時候,需要解析器的支援,所以需要安裝乙個。

博主的為windows64位,所以選擇途中箭頭所示的版本。具體要依照個人情況而定。

安裝是否成功的驗證方法就是開啟python直譯器,import一下即可。若出現下圖,那麼恭喜,環境搭建完畢了。

總的來說,語法沒什麼難度,也是人們司空見慣的了。

- 大小寫敏感

- 使用縮排表示層級關係

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

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

另外,和python的注釋方式一樣,以#號作為注釋符,很人性化了吧。

yaml本身語法很簡單,但是卻可以基於此實現比較強大的配置功能。思考一下,作為乙個配置檔案,可能出現的情況有哪些?

其實,認真的思考一下就會明白了。yaml不是乙個憑空捏造的資料格式,而是經過了實際考驗的人性化設計的一套規範。針對上面的問題,答案就是yaml本身支援的資料結構了,也很好記憶。

列表,陣列

模擬python語言,yaml性質與其保持一致。但是書寫方式上來說嘛,也可以是不一致的。大致有如下兩種:

['陣列1','陣列2','陣列3','陣列4','陣列5']
-陣列1

-陣列2

-陣列3

-陣列4

-陣列5

注意好符合一開始講的,語法規則即可。

原子量也即是純量,不能再細分的資料結構。模擬其他的程式語言,yaml也充分地考慮到了這一點。

日期: 採用復合 iso8601 格式的年、月、日表示。如1970-01-01

關於強制型別轉換: 可以通過兩個英文感嘆號+新的資料型別的方式來進行強制的型別轉換。

如:

e: !!str 123

f: !!str true

將變為:

除此簡單的介紹之外,yaml還有很多更為奇妙的語法,但是掌握了這些基礎的使用,寫乙個配置檔案基本上就夠用了。如果有興趣的話,可以在深入的研究一下。

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

下面是從網上找的乙個簡單的按照yaml語法書寫的乙個檔案,將作為待會的源來使用。

name: tom smithage: 37spouse:    name: jane smith    age: 25children: -name:

jimmy

smith

age: 15 -name1:

jenny

smith

age1: 12

# coding:utf-8import sysreload(sys)sys.setdefaultencoding('utf8')#    __author__ = '郭 璞'

#    __date__ = '2016/10/31'

#    __desc__ = yaml 在python中的應用import yamlstream = file('example.yaml', 'r')data = yaml.load(stream)print data['children'][0]['name']

所得結果為:

jimmy smith
理解層面以python中的dict來理解即可。

# coding:utf-8

import sysreload(sys)sys.setdefaultencoding('utf8')#    __author__ = '郭 璞'

#    __date__ = '2016/10/31'

#    __desc__ = yaml 在python中的應用

print yaml.dump(s)lists = ['zhangsan', 'lisi', 'wangwu', 'zhaoliu']print yaml.dump(lists)class

person

(object):

def__init__

(self, name, age):        self.name = name        self.age = agep1 = person('zhangsan', 19)p2 = person('lisi', 20)p3 = person('wangwu', 21)persons = [p1, p2, p3]print yaml.dump(persons)

執行結果:

同樣的,這裡也可以看到強制型別轉換的身影。

這樣的話,模擬json庫的學習,yaml庫也可以很好的被應用了。

使用這樣的方式可以最大限度的解耦和**,實現更高的可移植性。

同樣,寫配置檔案也不一定要用yaml,還可以有很多的選擇,比如configparser了,.ini了,還可以自定義(借助於正規表示式做好相關的訪問即可)。

沒有哪種是最好的,只有適合的才是最好的。在不同的場合選擇適合自己的配置檔案的書寫方式即可。

(^__^) 嘻嘻……

給我老師的人工智慧教程打call!

YAML 在Python中的應用

程式設計免不了要寫配置檔案,怎麼寫配置也是一門學問。yaml 是專門用來寫配置檔案的語言,非常簡潔和強大,遠比 json 格式方便。yaml 語言 發音 j m l 的設計目標,就是方便人類讀寫。它實質上是一種通用的資料序列化格式。它的基本語法規則如下 1 大小寫敏感 2 使用縮排表示層級關係 3 ...

python中yaml配置檔案模組的使用

和gnu一樣,yaml是乙個遞迴著說 不 的名字。不同的是,gnu對unix說不,yaml說不的物件是xml。yaml不是xml。為什麼不是xml呢?因為 上面5條也就是xml不足的地方。同時,yaml也有xml的下列優點 yaml可以基於流來處理 yaml表達能力強,擴充套件性好。總之,yaml試...

python中yaml檔案的讀寫

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