[Python] 003. yaml을 이용한 환경설정 파일 만들기

프로그램에 실행시 필요한 설정값을 파일로 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)

 

1 thought on “[Python] 003. yaml을 이용한 환경설정 파일 만들기”

Leave a Comment