python-yaml


python-YAML

YAML 是一種簡潔的非標記語言。其以數據為中心,使用空白,縮進,分行組織數據,從而使得表示更加簡潔。主要是作為項目的配置文件。

文件格式

基本規則:

  • 大小寫敏感

  • 使用縮進表示層級關系

  • 縮進時不允許使用Tab鍵,只允許使用空格。

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

  • 使用#表示注釋

  • 字符串可以不用引號標注

yaml 支持的數據結構有三種:

  • 對象:鍵值對的集合,又稱為映射(mapping)/ 哈希(hashes) / 字典(dictionary)
  • 數組:一組按次序排列的值,又稱為序列(sequence) / 列表(list)
  • 純量(scalars):單個的、不可再分的值。字符串、布爾值、整數、浮點數、Null、時間、日期

數組序列

- admin1: 123456
- admin2: 111111
- admin3: 222222
輸出:[{'admin1': 123456},
      {'admin2': 111111}, 
      {'admin3': 222222}]

純量

n1: 52.10

---------------------------------------------------------------

n2: true 
n3: false    #不區分大小寫

---------------------------------------------------------------

None用~表示
n4: ~

輸出:{'n1': 52.1}

---------------------------------------------------------------

輸出:{'n2': True, 'n3': False}

---------------------------------------------------------------
輸出:{'n4': None}

鍵值對

user: admin
pwd: 123
job:
  - teacher
  - nurese
{'user': 'admin',
 'pwd': 123,
 'job': ['teacher', 'nurese']}

混合使用

1.list嵌套dict

- user: admin1
  psw: '123456'
- user: admin2
  psw: '111111'
- user: admin3
  psw: '222222'

用python讀取出來的結果:

[{'user': 'admin1', 'psw': '123456'},
{'user': 'admin2', 'psw': '111111'},
{'user': 'admin3', 'psw': '222222'}]

2.dict嵌套list

nub1:
    - admin1
    - '123456'
nb2:
    - admin2
    - '111111'
nb3:
    - admin3
    - '222222'

用python讀取出來的結果:

{'nub1': ['admin1', '123456'],

'nb2': ['admin2', '111111'], 

安裝創建

pip install pyyaml

1、創建一個file,前面文件名稱隨便,后面文件后綴 .yaml

2、 編寫 yaml

# 簡介
name: zhangsan
age: 20
profession:
      name: fawaikuangtu
      annual: 1k
skill:
      - name: zhangwu
        pay: 1K

      - name2: lisi
        pay: 2K

讀取yaml

import yaml

f = open(r'./name.yaml','r',encoding='utf-8')
result = f.read()
print(result)


---------------------------------------------------------------
#由於官方提示load方法存在安全漏洞,所以讀取文件時會報錯。加上warning忽略,就不會顯示警告
yaml.warnings({'YAMLLoadWarning':False}) 
pyres=yaml.load(result)

# 或者
pyres=yaml.safe_load(result)   # yaml.load() 發出警告
# 因為python認為load是不安全的,發出了安全警告,那么我們如何取消警告呢?

print(pyres)

print(result)
name: zhangsan
age: 20
profession:
      name: fawaikuangtu
      annual: 1k        
skill:
      - name: zhangwu   
        pay: 1K

      - name2: lisi     
        pay: 2K

---------------------------------------------------------------
print(pyres)
{'name': 'zhangsan', 'age': 20, 'profession': {'name': 'fawaikuangtu', 'annual': '1k'}, 'skill': [{'name': 'zhangwu', 'pay': '1K'}, {'name2': 'lisi', 'pay': '2K'}]} 

文件寫入

import yaml
import os

def yaml_doc(yampath):
      data={'school':'luoxiang',
            'studens':['zhangsan','lisi']}
      file=open(yampath,'w',encoding='utf-8')
      yaml.dump(data,file)
      file.close()

currentpath=os.path.abspath('.')     #獲取當前路徑
yamlpath=os.path.join(currentpath,'xingfa.yaml')    #創建yaml文件
yaml_doc(yamlpath)

---------------------------------------------------------------
輸出:
generate.yaml文件
school: luoxiang
studens:
  - zhangsan
  - lisi


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM