데이터 구동 의 Yaml 구현

10317 단어 #자동화 테스트
1. 배경: 데이터 및 프로필 싸움
데이터 와 파일 은 보통 세 가지 유형 이 있 습 니 다.
설정 파일 형: 예 를 들 어 ini, conf, properties 파일 은 간단 한 변수 와 설정 항목 을 저장 하기에 적합 하고 최대 2 층 을 지원 하 며 다 중 포 함 된 데이터 시트 매트릭스 형 을 저장 하 는 데 적합 하지 않 습 니 다. 예 를 들 어 csv, 엑셀 등 은 같은 데 이 터 를 대량으로 저장 하 는 데 적합 하고 다 중 포 함 된 구조 에 적합 하지 않 습 니 다. 예 를 들 어 XML, HTMl, JSON, YAML, TOML 등 입 니 다.단일 항목 이나 소수의 다 중 내장 데 이 터 를 저장 하기에 적합 하고 대량의 데 이 터 를 저장 하 는 데 적합 하지 않 습 니 다. YAML 은 JSON 형식 과 호 환 되 며 간결 하고 강력 하 며 유연 하 며 편리 한 구조 등급 데 이 터 를 구축 하고 Python 의 사전 으로 빠르게 전환 할 수 있 습 니 다.
2. YMAL 소개
YAML (YAML Ain 't Markup Language) 은 일종 의 반 표기 (XML) 언어 다.태그 가 아 닌 데이터 중심 을 강조 합 니 다.YAML 대소 문자 가 민감 하고 들 여 쓰기 로 등급 관 계 를 나 타 냅 니 다.YAML 에서 지원 하 는 대상 Object (Python 의 사전 에 대응), 배열 Array (Python 의 목록 에 대응) 및 상수 (문자열, 숫자 (int / float), true / false / null).JSON 형식 에 비해 YAML 은 따옴표, 쉼표, 대괄호, 중 괄호 등 을 면제 하고 주석, 유형 변환, 크로스 줄, 닻 점, 인용 및 삽입 등 을 지원 합 니 다.
3. 기본 서식
  • 대상: key: value 를 사용 하여 콜론 뒤에 빈 칸 이 있 거나 {key: value} (flow 흐름 형식) 또는 {"key": "value"} 를 사용 하여 표시 할 수도 있 습 니 다
  • 배열: 사용 - value 표시, - 뒤에 빈 칸 이 있 습 니 다. 각 줄 마다 [value 1, value 2, value 3,...] (flow 흐름 형식) 또는 [value 1, value 2, value 3...]
  • 을 사용 할 수 있 습 니 다.
  • 문자열: abc 또는 "abc"
  • 숫자: 123 또는 123.45
  • true / false: true / false, TRUE / FALSE, True / False 또는 on / off, ON / OFF, On / Off
  • null: null, NULL, Null 또는 ~
  • 예제 파일 demo. yaml:
    #   :  yaml  
    name: Cactus
    age: 18
    skills: 
      -
        - Python
        - 3
      -
        - Java
        - 5
    has_blog: true
    gf: ~
    

    다음 JSON 형식 에 해당 합 니 다.
    {
         
      "name": "Cactus",
      "age": 18,
      "skills": [
        [
          "Python",
          3
        ],
        [
          "Java",
          5
        ]
      ],
      "has_blog": true,
      "gf": null
    }
    

    4. 파 이 썬 이 YAML 파일 을 조작 합 니 다.
    4.1 설치 Yml
    pip install pyyaml
    

    4.2 Yml 상용 방법 소개
    JSON 파일 과 유사 하 며, Yml 도 load 와 dump 두 가지 방법 을 제공 합 니 다.
    yaml. load () 또는 yaml. safeload (YAML 문자열 이나 파일 핸들): Yml - > 사전, 예 를 들 어 Yml 에 중국어 가 있 으 면 문자열. encode ('utf - 8') 를 사용 하거나 파일 을 열 때 encoding = 'utf - 8' Yml. dump (사전) 를 지정 해 야 합 니 다. 기본 값 은 flow 흐름 형식 입 니 다. 즉, 사전 {b ': {' c ': 3,' d ': 4}} 은 b 로 전 환 됩 니 다. {c: 3, d: 4} 형식 으로 default 를 사용 할 수 있 습 니 다.flow_style = False 스 트림 종료 모드 는 Yml. load () 가 원생 Python 대상 을 지원 하기 때문에 안전 하지 않 습 니 다. Yml. safe 를 사용 하 는 것 을 권장 합 니 다.load()
    예제 1: Yml 문자열 - > 사전
    import yaml
    yaml_str = '''
    name: Cactus
    age: 18
    skills: 
      -
        - Python
        - 3
      -
        - Java
        - 5
    has_blog: true
    gf: ~
    '''
    print(yaml.safe_load(yaml_str)) 
    

    인쇄 결과:
    {'name': 'Cactus', 'age': 18, 'skills': [['Python', 3], ['Java', 5]], 'has_blog': True, 'gf': None}
    

    중국어 가 있 으 면 Yml. load (Yml str. encoding (utf - 8) 를 사용 할 수 있 습 니 다.
    예제 2: Yml 파일 - > 사전
    import yaml
    with open('demo.yaml', encoding='utf-8') as f:   # demo.yaml     yaml    
        print(yaml.safe_load(f))
    

    인쇄 결 과 는 상례 와 같다.
    예제 3: 사전 - > Yml 문자열 이나 파일
    import yaml
    dict_var = {
         'name': 'Cactus', 'age': 18, 'skills': [['Python', 3], ['Java', 5]], 'has_blog': True, 'gf': None}
    print(yaml.dump(dict_var,))  #      ,    flow   
    with open('demo5.yaml', 'w', encoding='utf-8') as f:
        yaml.dump(dict_var, f, default_flow_style=False)  #     ,   flow   
    

    인쇄 내용:
    age: 18
    gf: null
    has_blog: true
    name: Cactus
    skills:
    - [Python, 3]
    - [Java, 5]
    

    demo 5. yaml 파일 내용:
    age: 18
    gf: null
    has_blog: true
    name: Cactus
    skills:
    - - Python
      - 3
    - - Java
      - 5
    

    더 많은 작업 은 pyyaml 공식 문 서 를 참고 할 수 있 습 니 다:https://pyyaml.org/wiki/PyYAMLDocumentation
    5. 데이터 구동 의 Yaml 실현
    5.1 계속
    특별 설명
    이상 내용 참고: 임 연

    좋은 웹페이지 즐겨찾기