• python--Yaml操作


    1、安装:pip install PyYaml -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

    2、python操作Yaml库:

    字典--转换--字符串

    import yaml
    python_obj = {
        "name":u"张三",
        "age":0,
        "job":"Tester"
        }
    y=yaml.dump(python_obj,default_flow_style=False)
    print(y)
    print(type(y))
    
    结果:
    age:0
    job:Tester
    name:"u5fc3u7530"
    
    <class 'str'>

    3、基本规则

    • 大小写敏感
    • 使用缩进表示层级关系
    • 缩进时不允许使用Tab,只允许使用空格
    • 缩进的空格数目不重要,只要相同层级的元素左对齐即可
    • # 表示注释,从它开始到行尾都被忽略

    4实例1:

    test.yaml文件

    #注释
    #1、字典数据
    name: tom #冒号后一定要加空格,才是键值对,注释前也加空格,加一个
    password: 123456

    test_yaml.py文件

    import yaml
    #操作yaml
    yamlDir='test.yaml'
    #创建文件对象
    fo=open(yamlDir,'r',encoding='utf-8')
    res=yaml.load(fo,Loader=yaml.FullLoader)
    print(res)

    结果:{'name': 'tom', 'password': 123456}

    实例2:

    test.yaml文件

    #2-数组(列表),注意空格
    - hello
    - 张三
    - 100

    test_yaml.py文件

    import yaml
    #操作yaml
    yamlDir='test.yaml'
    #创建文件对象
    fo=open(yamlDir,'r',encoding='utf-8')
    res=yaml.load(fo,Loader=yaml.FullLoader)
    print(res)

    结果:['hello', '张三', 100]

    实例3:

    test.yaml文件

    #组合关系,注意空格和层级关系
    -
      name: test
      psw: 1234
    -
      aa: 100
      bb: 
      - 30
      - 40

    test_yaml.py文件

    import yaml
    #操作yaml
    yamlDir='test.yaml'
    #创建文件对象
    fo=open(yamlDir,'r',encoding='utf-8')
    res=yaml.load(fo,Loader=yaml.FullLoader)
    print(res)

    结果:[{'name': 'test', 'psw': 1234}, {'aa': 100, 'bb': [30, 40]}]

    4、如果字符串中间有特殊符号,则必须给字符串加引号,单引号为原样输出,双引号则特殊字符其效果

    'hello word'

    结果:hello word

    "hello word"

    结果:hello

    word

    5、引用

    &设置 *引用(内部参数化)

    name: &name 张三
    tester: *name

    结果:{’name': '张三', 'age': '张三'}

    6、分段,多组数据

    test.yaml文件

    ---
    name: &name tom
    age: *name
    ---
    aa: 100
    bb: 200

    test_yaml.py文件

    import yaml
    #操作yaml
    yamlDir='test.yaml'
    #创建文件对象
    fo=open(yamlDir,'r',encoding='utf-8')
    # res=yaml.load(fo,Loader=yaml.FullLoader)
    # print(res)
    
    #2组数据---可迭代对象
    res=yaml.load_all(fo,Loader=yaml.FullLoader)
    print(res)
    for one in res:
        print(one)

    结果:

    <generator object load_all at 0x000000F125F409E0>
    {'name': 'tom', 'age': 'tom'}
    {'aa': 100, 'bb': 200}

    7、yaml写操作

    test_yaml.py文件

    import yaml
    #yaml写操作
    yamlDir='test.yaml'
    fo=open(yamlDir,'w',encoding='utf-8')
    data1={'name':'tom','age':20}
    yaml.dump(data1,fo)

    test.yaml文件内写入值:

    age: 20
    name: tom
  • 相关阅读:
    2017.11.10 MPLAB IPE + ICD-3+ PIC32MM
    How to Have a Healthy Relationship --shanbei 为单身节写
    New Concept English three (35)
    PyQt(Python+Qt)学习随笔:Qt Designer中主窗口对象的dockOptions属性
    PyQt(Python+Qt)学习随笔:Qt Designer中主窗口对象unifiedTitleAndToolBarOnMac属性
    PyQt(Python+Qt)学习随笔:Qt Designer中主窗口对象dockNestingEnabled属性
    PyQt(Python+Qt)学习随笔:Qt Designer中主窗口对象的tabShape属性
    PyQt(Python+Qt)学习随笔:Qt Designer中主窗口对象documentMode属性
    PyQt(Python+Qt)学习随笔:Qt Designer中主窗口对象的toolButtonStyle属性
    PyQt(Python+Qt)学习随笔:Qt Designer中主窗口对象的animated属性
  • 原文地址:https://www.cnblogs.com/guang2508/p/13442604.html
Copyright © 2020-2023  润新知