程式設計免不了要寫配置檔案,怎麼寫配置也是一門學問。
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功能。也可以用於默寫使用...