Python에서 YAML 파일 구문 분석

Rayven Esplanada 2023년10월10일
Python에서 YAML 파일 구문 분석

이 튜토리얼은 Python에서 YAML 파일을 구문 분석하는 다양한 방법을 보여줍니다.

YAML은 프로젝트 내에서 구성 또는 속성 파일을 저장하기위한 파일 형식으로 사용되는 데이터 직렬화 표준입니다. YAML은 종종 일반적인 XML 또는 JSON 구성 파일을 대체합니다. 두 파일 유형보다 파일을 직렬화하기가 더 쉽기 때문입니다.

PyYAML패키지를 사용하여 Python에서 YAML 구문 분석

pyyaml은 Python 내에서 YAML 파일을 구문 분석하고 조작하는 유틸리티를 제공하는 Python 패키지입니다.

첫 번째 단계는pip를 사용하여pyyaml을 설치하는 것입니다. Python에서는 쉽게 사용할 수 없기 때문입니다.

pip install pyyaml 

Python 3.x 사용자의 경우pip대신pip3을 사용합니다.

pip3 install pyyaml

이제 설치가 완료되었으므로 샘플 YAML 파일 구문 분석을 진행하십시오. YAML 파일은 항상 새 YAML 문서의 시작을 나타 내기 위해 파일 시작 부분에 세 개의 대시---가 있습니다.

YAML 파일은 탭 공간을 들여 쓰기로 인식하지 않으므로 공백은 YAML 파일을 들여 쓰기 할 때만 사용해야합니다.

YAML 파일의 확장자는.yaml또는.yml일 수 있습니다.

  • sample.yaml
---
	name: "John"
	age: 23
	isMale: true
	hobbies:
		- swimming
		- fishing
		- diving

Python에서 주어진 YAML 파일을 읽으려면 먼저yaml모듈을 가져옵니다. 그런 다음open()함수를 사용하여 yaml 파일을 엽니 다. yaml모듈에는 파일을 인수로 받아들이고 Python에서 YAML 파일을로드 한 다음 Python 객체 데이터 유형으로 변환하는 사전 정의 된 함수load()가 있습니다.

import yaml

with open("sample.yaml", "r") as f:
    print(yaml.load(f))

yaml.load()의 출력을 인쇄하면 YAML 파일의 내용이 Python 객체 형식으로 표시됩니다.

출력:

{'name': 'John', 'age': 23, 'isMale': True, 'hobbies': ['swimming', 'fishing', 'diving']}

YAML 파일이 존재하고 손상되지 않았는지, 사용하기에 안전한지 확인하기 위해try블록을 추가하고yaml모듈YAMLError내의 내장 오류 객체를 사용하여 예외를 포착 할 수 있습니다. 코드를 더 안전하게 사용하기위한 또 다른 계층은load()함수를safe_load()로 바꾸는 것입니다.이 함수는 YAML 파일을로드하기 전에 유효성을 검사합니다.

import yaml

with open("sample.yaml", "r") as stream:
    try:
        print(yaml.safe_load(stream))
    except yaml.YAMLError as exc:
        print(exc)

이 솔루션은 이전 솔루션과 동일한 출력을 갖지만 Python에서 YAML 파일을 구문 분석하는 훨씬 더 안전한 접근 방식입니다.

요약하면yaml모듈을 사용하면 Python에서 YAML 파일을 쉽게 구문 분석 할 수 있습니다. 모듈은 쉽게 내장되어 있지 않으므로 사용하기 전에pip install pyyaml을 수행해야합니다.

파일 조작이 원활하고 안전하게 수행 될 수 있도록try...except블록으로 파일 조작 함수를 캡슐화하는 것이 항상 좋은 습관입니다.

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

관련 문장 - Python YAML