yaml tutorial comprehensive guide yaml using python
이 YAML 자습서에서는 Python을 사용하는 코드 예제를 사용하여 YAML이란 무엇인지, 데이터 유형, YAML 유효성 검사기, 파서, 편집기, 파일 등과 같은 YAML의 기본 개념을 설명합니다.
Windows 10 용 최고의 하드 드라이브 클리너
컴퓨터 과학의 텍스트 처리는 프로그래머가 구성 가능한 프로그램 및 응용 프로그램을 만드는 데 도움이됩니다. 마크 업 언어는 사람이 읽을 수있는 형식으로 데이터를 저장하고 교환하는 데 중요한 역할을합니다.
또한 프로그래머는 마크 업 언어를 공통으로 사용하고 서로 다른 시스템간에 표준 데이터 교환 형식을 사용합니다. 약간 예 마크 업 언어에는 HTML, XML, XHTML 및 JSON이 포함됩니다.
따라하기 쉬운 YAML 튜토리얼에서 하나 이상의 마크 업 언어에 대한 정보를 공유했습니다.
이 튜토리얼은 독자가 아래에 언급 된 질문에 대한 답을 찾는 데 도움이됩니다. 학습자는 첫 번째 단계를 수행하고 일반적으로 마크 업 언어, 특히 YAML의 신비를 이해할 수 있습니다.
질문에는 다음이 포함됩니다.
- 마크 업 언어가 필요한 이유는 무엇입니까?
- YAML은 무엇을 의미합니까?
- YAML이 만들어진 이유는 무엇입니까?
- YAML을 배워야하는 이유는 무엇입니까?
- 오늘날 YAML을 배우는 것이 왜 중요한가요?
- YAML에 어떤 유형의 데이터를 저장할 수 있습니까?
이 가이드는 일반적인 프로그래밍 컨텍스트와 소프트웨어 테스트 컨텍스트에서 개념을 논의 할 때 경험이있는 독자에게도 유용합니다. 여기서는 직렬화 및 역 직렬화와 같은 주제도 다룰 것입니다.
학습 내용 :
YAML이란?
YAML의 제작자는 처음에이를 '아직 다른 마크 업 언어'라고 명명했습니다. 그러나 시간이 지남에 따라 약어는 'YAML Ai n’t a MarkUp language'로 변경되었습니다. YAML은 자신을 나타내는 약어이며 재귀 적 약어라고합니다.
이 언어를 사용하여 사람이 읽을 수있는 형식으로 데이터와 구성을 저장할 수 있습니다. YAML은 학습 할 기본 언어입니다. 그 구조도 이해하기 쉽습니다.
Clark, Ingy 및 Oren은 이해하기 어려운 다른 마크 업 언어 이해의 복잡성을 해결하기 위해 YAML을 만들었으며 학습 곡선도 YAML을 배우는 것보다 가파 릅니다.
학습을보다 편안하게하기 위해 항상 그렇듯이 샘플 프로젝트를 사용합니다. 우리는 누구나 수정하고 필요한 경우 풀 요청을 제출할 수 있도록 MIT 라이선스로 Github에서이 프로젝트를 호스팅합니다.
아래 명령을 사용하여 프로젝트를 복제 할 수 있습니다.
git clone git@github.com:h3xh4wk/yamlguide.git
그러나 필요한 경우 다음을 수행 할 수 있습니다. zip 다운로드 코드 및 예제 파일.
또는 독자는 IntelliJ IDEA의 도움으로이 프로젝트를 복제 할 수 있습니다. 프로젝트를 복제하기 전에 Python을 설치하고 IntelliJ IDEA로 구성하기위한 전제 조건 섹션을 완료하십시오.

마크 업 언어가 필요한 이유
모든 것을 소프트웨어 코드로 작성하는 것은 불가능합니다. 수시로 코드를 유지해야하고 외부 파일이나 데이터베이스에 대한 세부 사항을 추상화해야하기 때문입니다.
코드를 가능한 최소한으로 줄이고 다양한 데이터 입력에 대한 수정이 필요하지 않은 방식으로 생성하는 것이 가장 좋습니다.
예를 들면 단일 파일에 코드와 데이터를 함께 작성하는 대신 외부 파일에서 입력 데이터를 가져와 내용을 한 줄씩 인쇄하는 함수를 작성할 수 있습니다.
데이터 생성과 코드 생성에 대한 우려를 분리하기 때문에 모범 사례로 간주됩니다. 코드에서 데이터를 추상화하는 프로그래밍 방식은 유지 관리를 쉽게합니다.
마크 업 언어를 사용하면 계층 적 정보를보다 접근하기 쉽고 가벼운 형식으로 쉽게 저장할 수 있습니다. 이러한 파일은 많은 대역폭을 사용하지 않고 인터넷을 통해 프로그램간에 교환 할 수 있으며 가장 일반적인 프로토콜을 지원합니다.
이러한 언어는 범용 표준을 따르며 전 세계 거의 모든 언어의 문자를 지원하기 위해 다양한 인코딩을 지원합니다.
마크 업 언어의 가장 좋은 점은 일반적인 사용이 어떤 시스템 명령과도 관련이 없다는 것입니다.이 특성은 더 안전하고 전 세계적으로 널리 채택되는 이유입니다. 따라서 출력을 생성하기 위해 직접 실행할 수있는 YAML 명령을 찾지 못할 수 있습니다.
YAML 파일 사용의 이점
YAML에는 많은 이점이 있습니다. 아래 표는 YAML과 JSON의 비교를 보여줍니다. JSON은 JavaScript Object Notation을 나타내며 데이터 교환 형식으로 사용합니다.
속성 | YAML | JSON |
---|---|---|
다변 | 덜 장황함 | 더 자세히 |
데이터 유형 | 복잡한 데이터 유형을 지원합니다. | 복잡한 데이터 유형을 지원하지 않습니다. |
코멘트 | '#'을 사용하여 주석 작성을 지원합니다. | 댓글 작성을 지원하지 않습니다. |
가독성 | 더 사람이 읽을 수 있습니다. | 사람이 읽을 수있는 수준이 낮습니다. |
자기 참조 | '&,'및 *를 사용하여 동일한 문서 내에서 요소 참조를 지원합니다. | 자체 참조를 지원하지 않습니다. |
여러 문서 | 단일 파일에서 여러 문서를 지원합니다. | 단일 파일에서 단일 문서를 지원합니다. |
JSON과 같은 다른 파일 형식에 비해 YAML의 이점으로 인해 YAML은 다양성과 유연성으로 인해 개발자들 사이에서 더 널리 사용됩니다.
전제 조건
먼저 Python을 설치 한 다음 IntelliJ IDEA로 Python 및 해당 패키지를 구성합니다. 따라서 진행하기 전에 아직 설치하지 않은 경우 IntelliJ IDEA를 설치하십시오.
Python 설치
Windows 10에 Python을 설치하고 설정하려면 다음 단계를 따르세요.
1 단계
Python 다운로드 아래 그림과 같이 설정을 선택하여 설치합니다.

2 단계
설치를 시작하고 설치 사용자 지정을 선택합니다. 확인란을 선택하십시오. PATH에 Python 추가 .

3 단계
이미지에 표시된대로 Python의 위치를 사용자 지정합니다.

4 단계
설치를 진행하십시오. 설치 마법사가 끝날 때 마법사에서 옵션을 클릭하여 Windows에서 경로 제한을 비활성화합니다.

이제 Python 설정이 완료되었습니다.
IntelliJ IDEA로 Python 구성
이제 Python으로 IntelliJ IDEA를 구성 해 보겠습니다. 첫 번째 단계는 Python 프로젝트에서 작업 할 수 있도록 플러그인을 설치하는 것입니다.
Python 플러그인 설치
Python Community Edition 설치

Python 보안 설치

구성을 완료하려면 아래 단계를 따르십시오.
1 단계
파일 메뉴를 사용하고 플랫폼 설정으로 이동합니다. 클릭 SDK 추가 버튼 .

2 단계
선택 가상 환경 옵션 그리고 이전 단계에서 설치된 것으로 Python의 기본 인터프리터를 선택합니다.

3 단계
이제 이전 단계에서 만든 가상 환경을 선택합니다. 프로젝트 SDK 설정 .

하나의 프로젝트에 하나의 가상 환경을 권장합니다.
4 단계 (선택 사항)
프로젝트 탐색기에서 config.py 파일을 열고 설치 요구 사항 , 아래 이미지와 같이.

패키지 선택 대화 상자에서 옵션을 선택 취소하여 필요한 경우 ipython 요구 사항을 무시하십시오.

이제 다음 섹션으로 이동하여 YAML의 기본 사항을 배울 수 있습니다.
YAML의 기초
이 섹션에서는 config.yml 및 config.py라는 예제 파일의 도움으로 YAML의 기본 사항을 언급합니다. 우리는 프로그래밍 언어에서의 사용과 병행하여 YAML의 개념을 설명하는 것이 학습을 더 좋게한다고 굳게 믿습니다.
따라서 YAML의 기본 사항을 설명하는 동시에 Python을 사용하여 YAML에 저장된 데이터를 읽고 씁니다.
이제 각 편집기에서 config.yml을 생성하거나 열고 YAML을 이해하겠습니다.
--- quiz: description: > 'This Quiz is to learn YAML.' questions: - ('How many planets are there in the solar system?', 'Name the non-planet') - 'Who is found more on the web?' - 'What is the value of pi?' - 'Is pluto related to platonic relationships?' - 'How many maximum members can play TT?' - 'Which value is no value?' - 'Don't you know that the Universe is ever-expanding?' answers: - (8, 'pluto') - cats - 3.141592653589793 - true - 4 - null - no # explicit data conversion and reusing data blocks extra: refer: &id011 # give a reference to data x: !!float 5 # explicit conversion to data type float y: 8 num1: !!int '123' # conversion to integer str1: !!str 120 # conversion to string again: *id011 # call data by giving the reference
YAML 파일에는.ly신장. 언어는 대소 문자를 구분합니다. 들여 쓰기에는 탭이 아닌 공백을 사용합니다.
이러한 기본 사항과 함께 데이터 유형을 이해합시다. 언급 된 YAML에서 우리는 퀴즈에 대한 정보를 표시했습니다. 퀴즈는 설명, 질문 및 답변과 같은 속성이있는 루트 수준 노드로 표시됩니다.
YAML 데이터 유형
YAML은 스칼라, 시퀀스 및 매핑을 저장할 수 있습니다. config.yml 파일에 필요한 모든 데이터 유형을 작성하는 방법을 표시했습니다.
스칼라는 문자열, 정수, 부동 소수점 및 부울입니다. 문자열 유형의 데이터는 큰 따옴표 '로 묶여 있습니다. 그러나 YAML은 큰 따옴표로 문자열을 작성하지 않으며> 또는 | 긴 문자열을 여러 줄로 작성합니다.
아래 표에서 다양한 데이터 유형과 매핑 된 값을 확인하세요.
데이터 형식 | Config.yml의 데이터 유형 예 |
---|---|
끈 문자열은 따옴표를 포함하거나 포함하지 않고 저장할 수 있습니다. | 퀴즈: 설명 :> 이 퀴즈는 YAML을 배우는 것입니다 질문 : - '웹에서 누가 더 많이 찾을 수 있습니까?' 대답: -고양이 |
정수와 부동 소수점 정수와 부동 소수점은 원래 형식으로 언급됩니다. | 퀴즈: 질문 : - '파이의 가치는?' - 'TT는 최대 몇 명까지 플레이 할 수 있나요?' 대답: -3.141592653589793 -4 |
부울 부울은 true / false 또는 yes / no 문자열을 사용하여 저장됩니다. | 퀴즈: 질문 : - '명왕성은 플라토닉 관계와 관련이 있는가?' - '우주가 계속 확장되고 있다는 것을 모르십니까?' 대답: - 진실 - 하지 마라 |
시퀀스 시퀀스는 대괄호 (. | 퀴즈: 대답: -(8, '명왕성') |
참고 문헌 자기 참조는 & 및 *의 도움으로 사용됩니다. | # 명시 적 데이터 변환 및 데이터 블록 재사용 특별한: refer : & id011 # 데이터에 대한 참조 제공 # 기타 값 다시 : * id011 # 참조를 제공하여 데이터 호출 |
아래 나열된 것은 YAML 파일의 추가 요소에 주목할 가치가있는 몇 가지입니다.
문서
이제 세 개의 대시 표시 —. 문서의 시작을 나타냅니다. 퀴즈가 루트 요소로 포함 된 첫 번째 문서를 저장하고 설명, 질문 및 답변을 관련 값이있는 하위 요소로 저장합니다.
명시 적 데이터 유형
config.yml에서 extra라는 섹션 키를 관찰하십시오. 이중 느낌표의 도움으로 파일에 저장된 값의 데이터 유형을 명시 적으로 언급 할 수 있습니다. !! float를 사용하여 정수를 실수로 변환합니다. !! str을 사용하여 정수를 문자열로 변환하고 !! int를 사용하여 문자열을 정수로 변환합니다.
Python의 YAML 패키지는 YAML 파일을 읽고 내부적으로 사전으로 저장하는 데 도움이됩니다. Python은 사전 키를 문자열로 저장하고 '!!'를 사용하여 명시 적으로 언급하지 않는 한 값을 Python 데이터 유형으로 자동 변환합니다.
Python에서 YAML 파일 읽기
일반적으로 우리는 YAML을 작성할 때 YAML 편집기와 YAML 유효성 검사기를 사용합니다. YAML Validator는 작성시 파일을 확인합니다.
Python YAML 패키지에는 파일을 메모리에 저장하기 전에 구문 분석하는 내장 YAML 파서가 있습니다.
이제 아래 내용으로 각 편집기에서 config.py를 만들고 엽니 다.
import yaml import pprint def read_yaml(): ''' A function to read YAML file''' with open('config.yml') as f: config = yaml.safe_load(f) return config if __name__ == '__main__': # read the config yaml my_config = read_yaml() # pretty print my_config pprint.pprint(my_config)
위에서 언급 한 단계를 완료했는지 테스트하려면 config.py를 실행하십시오.
IntelliJ IDEA에서 config.py 파일을 열고 메인 블록을 찾은 다음 재생 아이콘을 사용하여 파일을 실행합니다.

파일을 실행하면 출력과 함께 콘솔이 표시됩니다.

read_yaml 함수에서 config.yml 파일을 열고 YAML 패키지의 safe_load 메서드를 사용하여 스트림을 Python 사전으로 읽은 다음 return 키워드를 사용하여이 사전을 반환합니다.
my_config 변수는 config.yml 파일의 내용을 사전으로 저장합니다. pprint라는 Python의 예쁜 인쇄 패키지를 사용하여 사전을 콘솔에 인쇄합니다.
위의 출력을 확인하십시오. 모든 YAML 태그는 Python의 데이터 유형에 해당하므로 프로그램에서 해당 값을 더 사용할 수 있습니다. 텍스트 입력에서 Python 개체를 생성하는이 프로세스를 역 직렬화라고합니다.
Python으로 YAML 파일 작성
config.py를 열고 read_yaml 메서드 바로 아래와 파일의 기본 블록 위에 다음 코드 줄을 추가합니다.
def write_yaml(data): ''' A function to write YAML file''' with open('toyaml.yml', 'w') as f: yaml.dump(data, f)
write_yaml 메소드에서는 쓰기 모드에서 toyaml.yml이라는 파일을 열고 YAML 패키지의 덤프 메소드를 사용하여 YAML 문서를 파일에 씁니다.
이제 config.py 파일 끝에 아래 코드 줄을 추가하십시오.
# write A python object to a file write_yaml(my_config)
config.py를 저장하고 아래 명령을 사용하거나 IDE에서 재생 아이콘을 사용하여 파일을 실행하십시오.
python config.py
위의 명령은 config.yml의 내용을 콘솔 또는 시스템의 출력으로 인쇄합니다. Python 프로그램은 toyaml.yml이라는 다른 파일에 동일한 내용을 씁니다. Python 객체를 외부 파일에 쓰는 과정을 직렬화라고합니다.
YAML의 여러 문서
YAML은 매우 다양하며 단일 YAML 파일에 여러 문서를 저장할 수 있습니다.
config.yml 파일의 복사본을 configs.yml로 만들고 파일 끝에 아래 줄을 붙여 넣습니다.
--- quiz: description: | This is another quiz, which is the advanced version of the previous one questions: q1: desc: 'Which value is no value?' ans: Null q2: desc: 'What is the value of Pi?' ans: 3.1415
세 개의 대시 — 위의 스 니펫에서 동일한 파일에있는 새 문서의 시작을 표시합니다. 사용 | 설명 태그 뒤에 문자열 유형의 여러 줄 텍스트를 작성할 수 있습니다. 여기 새 문서에서는 질문과 답변을 질문 아래에 중첩 된 별도의 매핑으로 저장했습니다.
이제 configs.py라는 새 파일을 만들고 아래에 언급 된 코드를 파일에 붙여 넣습니다.
import yaml import pprint def read_yaml(): ''' A function to read YAML file''' with open('configs.yml') as f: config = list(yaml.safe_load_all(f)) return config def write_yaml(data): ''' A function to write YAML file''' with open('toyaml.yml', 'a') as f: yaml.dump_all(data, f, default_flow_style=False) if __name__ == '__main__': # read the config yaml my_config = read_yaml() # pretty print my_config pprint.pprint(my_config) # write A python object to a file write_yaml(my_config)
read_yaml 및 write_yaml 함수의 변경 사항을 확인하십시오. read_yaml에서는 YAML 패키지의 safe_load_all 메소드를 사용하여 configs.yml에있는 모든 문서를 목록으로 읽습니다. 마찬가지로 write_yaml에서 dump_all 메서드를 사용하여 이전에 읽은 모든 문서 목록을 toyaml.yml이라는 새 파일에 씁니다.
이제 configs.py를 실행하십시오.
python configs.py
위 명령의 출력이 아래에 표시됩니다.
({'quiz': {'answers': ((8, 'pluto'), 'cats', 3.141592653589793, True, 4, None, False), 'description': 'This Quiz is to learn YAML', 'questions': (('How many planets are there in the solar system?', 'Name the non planet'), 'Who is found more on the web?', 'What is the value of pi?', 'Is pluto related to platonic relationships?', 'How many maximum members can play TT?', 'Which value is no value?', 'Don't you know that Universe is ever-expanding?')}}, {'quiz': {'description': 'This is another quiz, which
' 'is the advanced version of the previous one
', 'questions': {'q1': {'ans': None, 'desc': 'Which value is no value?'}, 'q2': {'ans': 3.1415, 'desc': 'What is the value of Pi?'}}}})
출력은 앞서 언급 한 단일 문서 출력과 유사합니다. Python은 configs.yml의 모든 문서를 Python 사전으로 변환합니다. 추가 처리 및 값 사용이 더 쉬워집니다.
자주 묻는 질문
YAML로 작업하는 동안 아래 질문을 접할 수 있습니다.
Q # 1) YAML 매핑의 순서를 유지할 수 있습니까?
대답: 예, Python의 pyYAML 패키지에서 로더의 기본 동작을 맞춤 설정할 수 있습니다. 여기에는 OrderedDicts를 사용하고 다음과 같이 사용자 지정 메서드를 사용하여 Base resolver를 재정의하는 작업이 포함됩니다. 여기 .
Q # 2) YAML에 이미지를 저장하는 방법은 무엇입니까?
대답: 아래와 같이 base64로 이미지를 인코딩하고 YAML로 유지할 수 있습니다.
image: !!binary | iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==
Q # 3)>와 |의 차이점은 무엇입니까? YAML의 태그?
대답: > 및 | YAML에서 여러 줄에 값을 쓸 수 있습니다. 큼 기호>를 사용하여 여러 줄 문자열을 작성하고 | 리터럴 값을 나타냅니다. 사용하여 작성된 값 | 탈출 할 필요가 없습니다. 예를 들면 |를 사용하여 Html을 저장할 수 있습니다.
template: | This is a test paragraph
This is another paragraph
자바로 파일을 여는 방법
Q # 4) YAML 파일의 끝에서 ...의 의미는 무엇입니까?
대답: 세 개의 마침표…는 선택적 식별자입니다. 스트림에서 문서의 끝을 표시하는 데 사용할 수 있습니다.
Q # 5) YAML 파일에 주석을 작성하는 방법은 무엇입니까?
대답: #을 사용하여 한 줄 주석을 작성합니다. YAML은 여러 줄 주석을 지원하지 않습니다. 따라서 아래와 같이 여러 줄에 #을 사용해야합니다.
# this is # a single line as well as multi-line # comment
결론
이 가이드에서는 YAML을 시작하기 위해 Windows와 Linux 모두에서 개발 환경을 준비하는 단계를 다뤘습니다. YAML의 기본 데이터 유형, YAML 편집기 및 YAML 파서의 모든 개념에 대해 거의 논의했습니다.
또한 YAML vis-a-vis 다른 마크 업 언어 사용의 이점을 강조하고 지원 샘플 프로젝트의 도움을 받아 코드 예제를 제공했습니다. 이제 학습자가 YAML을 사용하여 애플리케이션 로직에서 데이터를 추상화하여 효율적이고 유지 가능한 코드를 작성할 수 있기를 바랍니다.
행복한 학습 !!
추천 도서
- 초보자를위한 Python 자습서 (무료 Python 교육 실습)
- Python 소개 및 설치 프로세스
- Python Django 튜토리얼-Django 시작하기
- 예제가 포함 된 Python DateTime 자습서
- Python 파일 처리 자습서 : 생성, 열기, 읽기, 쓰기 방법
- TestComplete 자습서 : 초보자를위한 포괄적 인 GUI 테스트 도구 가이드
- Python 제어문 (Python Continue, Break 및 Pass)
- Python OOP 개념 (Python 클래스, 객체 및 상속)