python如何讀取 python 中讀取yaml

2021-10-11 07:28:21 字數 4100 閱讀 8252

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

yaml在python語言中有pyyaml安裝包。

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

它的基本語法規則如下:

1、大小寫敏感

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

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

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

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

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

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

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

1、環境搭建

執行命令:pip  install pyyaml

注意:我是在pycharm中的 terminal(終端)直接執行了命令,當然還可以在命令列執行命令安裝。

安裝成功的效果,不報錯!

2、yaml 在python中的使用

新建乙個yaml檔案

3、**實現獲取配置檔案資訊

# filename : yamldemo.py

# author : adil

# datetime : 2017/12/29 12:00

# software : pycharm

import yaml

import os

# 獲取當前檔案路徑 d:/workspace/studypractice/python_yaml/yamlstudy

filepath = os.path.dirname(__file__)

print(filepath)

# 獲取當前檔案的realpath d:\workspace\studypractice\python_yaml\yamlstudy\yamldemo.py

filenamepath = os.path.split(os.path.realpath(__file__))[0]

print(filenamepath)

# 獲取配置檔案的路徑 d:/workspace/studypractice/python_yaml/yamlstudy\config.yaml

yamlpath = os.path.join(filenamepath,'config.yaml')

print(yamlpath)

# 加上 ,encoding='utf-8',處理配置檔案中含中文出現亂碼的情況。

f = open(yamlpath,'r',encoding='utf-8')

cont = f.read()

x = yaml.load(cont)

print(type(x))

print(x)

print(x['email'])

print(type(x['email']))

print(x['email']['smtp_server'])

print(type(x['email']['smtp_server']))

print(x['db'])

print(x['db']['host'])

print(x.get('db').get('host'))

print(type(x.get('db')))

列印輸出結果如下:

4、**實現寫入配置檔案

# 寫入yaml 檔案

# a 追加寫入,w,覆蓋寫入

fw = open(yamlpath,'a',encoding='utf-8')

# 構建資料

data = }

# 裝載資料

yaml.dump(data,fw)

# 讀取資料,獲取檔案

f = open(yamlpath,'r',encoding='utf-8')

# 讀取檔案

cont = f.read()

# 載入資料

x = yaml.load(cont)

# 列印資料

print(x)

# 列印讀取寫入的資料

print(x.get("cookie1"))

寫入效果如圖

下面引用別人的例子,方便日後使用。

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

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

str1: 這是乙個字串

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

str2: '內容: *字串'

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

str3: '內容\n字串'

str4: "content\n string"

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

s3: 'labor''s day'

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

strline: 這是一段

多行字串

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

this: |

foobar

that: >

foobar

#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: 3306

user: 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 #

怎麼學python 新手如何自學python課程?

為了python的自學黨們,傳智播客真的是拼了,今天給大家講講新手如何自學python課程?傳智播客不僅有 人工智慧 python學習路線圖 還根據以往的經驗,總結出學習python之前的各種問題,想詳細了解,從此貼開始吧 當完整的實現了乙個小專案之後,相信你的內心肯定是非常激動的,這就是學習的收穫...

python求素數的函式 如何用python求素數

如何用python求100以內的素數?質數 primenumber 又稱素數,有無限個。質數定義為在大於1的自然數中,除了1和它本身以外不再有其他因數的數稱為質數,如 2 3 5 7 11 13 17 19。方法一,用for迴圈來實現num i 2for i in range 2,100 j 2fo...

python效率怎麼樣 如何優化python的效率

優化python的效率的方法 1 優化演算法時間複雜度 2 減少冗餘資料 3 合理使用copy與deepcopy 4 使用dict或set查詢元素 5 合理使用生成器 generator 和yield。優化方法 1 優化演算法時間複雜度 演算法的時間複雜度對程式的執行效率影響最大,在python中可...