[python] PyYAML을 사용하여 여러 개의 YAML 파일을 병합하기

YAML은 사람이 읽기 쉽고 이해하기 쉬운 데이터 직렬화 형식입니다. PyYAML은 Python에서 YAML을 처리하기 위한 라이브러리입니다. 이번 포스트에서는 PyYAML을 사용하여 여러 개의 YAML 파일을 병합하는 방법을 알아보겠습니다.

개발 환경 셋업

먼저, PyYAML을 설치해야 합니다. 아래의 명령어를 사용하여 PyYAML을 설치합니다.

pip install PyYAML

PyYAML이 설치되었다면, YAML 파일을 읽어오고 병합하는 코드를 작성해보겠습니다.

YAML 파일 병합하기

import yaml

def merge_yaml_files(file_list):
    merged_data = {}
    
    for file_path in file_list:
        with open(file_path, 'r') as file:
            data = yaml.safe_load(file)
            merged_data = merge_dict(merged_data, data)
    
    return merged_data

def merge_dict(dict1, dict2):
    if not isinstance(dict1, dict) or not isinstance(dict2, dict):
        return dict2
    
    merged_dict = dict1.copy()
    
    for key, value in dict2.items():
        if key in merged_dict and isinstance(merged_dict[key], dict) and isinstance(value, dict):
            merged_dict[key] = merge_dict(merged_dict[key], value)
        else:
            merged_dict[key] = value
    
    return merged_dict

# 병합할 YAML 파일들의 경로
file_list = ['file1.yaml', 'file2.yaml', 'file3.yaml']

# YAML 파일 병합
merged_yaml_data = merge_yaml_files(file_list)

# 병합된 YAML 데이터를 파일로 저장
with open('merged.yaml', 'w') as file:
    yaml.dump(merged_yaml_data, file)

이 코드는 merge_yaml_files 함수를 통해 주어진 YAML 파일들을 읽어와 병합한 뒤, merged.yaml 파일로 저장하는 기능을 제공합니다. merge_dict 함수는 두 개의 딕셔너리를 병합하는 로직을 구현한 함수입니다.

실행 결과

위의 코드를 실행하면 주어진 YAML 파일들이 병합되어 merged.yaml 파일로 저장됩니다.

즉, file1.yaml, file2.yaml, file3.yaml 파일의 YAML 내용들이 merged.yaml 파일에 병합되어 저장됩니다.

참고 자료