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中可...