프로그램에 실행시 필요한 설정값을 파일로 Read/Write 할 필요가 있을 때 yaml을 이용하면 간편히 환경설정 파일 Read/Write 기능을 구현할 수 있다. 저장되는 형태가 사람이 직관적으로 알 수 있도록 되어 있고 Load 시 Python Dictionay 형태로 Return 되어 사용하기도 아주 편리하다.
설치 패키지
PyYAML
YAML?
YAML Ain’t Markup Language 의 줄임말(GNU 처럼 재귀적인 명칭임)이며, 사람이 읽을 수 있는 데이터 직렬화 언로로서, 구성 파일 작성에 자주 사용됨.
Key: value로 표현하고, : 다음에는 공백 문자가 있어야 합니다.
test_yaml.yaml
site_A:
FIND_DAY1: "2023-11-19(일)"
FIND_DAYS: "1"
FIND_MONTH: "2023.11"
LOGIN:
- ID: "site_A_ID"
- PASS: "site_A_PASS"
site_B:
FIND_DAY1: "2023-11-19(일)"
FIND_DAYS: "1"
FIND_MONTH: "2023.11"
LOGIN:
- ID: "site_B_ID"
- PASS: "site_B_PASS"
YAML 파일 Load 하기
test_yaml.yaml 파일 Load 예제
import yaml
from icecream import ic
if __name__ == '__main__':
try:
with open("test_yaml.yaml", encoding='UTF-8') as file:
config = yaml.load(file, Loader=yaml.FullLoader)
except:
ic("파일 없음")
ic(config)
실행 결과
YAML 파일 Write 하기
test_yaml.yaml 파일 Load 후 항목 수정 후 Write 예제
import yaml
from icecream import ic
if __name__ == '__main__':
try:
with open("test_yaml.yaml", encoding='UTF-8') as file_read:
config = yaml.load(file_read, Loader=yaml.FullLoader)
except:
ic("파일 없음")
ic(config)
config['site_A']['FIND_DAY1'] = '2023-11-20(월)'
config['site_A']['LOGIN'] = [{'ID': 'site_A_New_ID'}, {'PASS': 'site_A_New_PASS'}]
ic(config)
with open("test_yaml.yaml", 'w') as file_write:
yaml.dump(config, file_write, default_flow_style=False, allow_unicode=True)
실행 결과
ic()로 출력되어 수정한 결과 확인 및 test_yaml.yaml 파일도 수정된 결과 확인할 수 있다.
PyYAML documentaion (https://pyyaml.org/wiki/PyYAMLDocumentation)
Everyone loves what you guys tend to be up too.
This sort of clever work and reporting! Keep up the amazing works
guys I’ve included you guys to my personal
blogroll.