[python] PyYAML을 이용하여 YAML 파일의 데이터를 병합하고 필터링하기

YAML은 사람이 읽고 쓰기 쉬운 데이터 직렬화 형식입니다. PyYAML은 YAML 파일을 파이썬 객체로 로드하고, 파이썬 객체를 YAML 형식으로 변환하는 데 사용됩니다. 이번 글에서는 PyYAML을 이용하여 YAML 파일의 데이터를 병합하고 필터링하는 방법에 대해 알아보겠습니다.

필요한 패키지 설치하기

PyYAML을 사용하기 위해서는 패키지를 설치해야 합니다. 아래의 명령어를 사용하여 PyYAML을 설치합니다.

pip install PyYAML

YAML 파일 데이터 로드하기

먼저, PyYAML을 import하고 YAML 파일을 로드하는 함수를 작성해보겠습니다. 아래의 코드를 참고하세요.

import yaml

def load_yaml(file_path):
    with open(file_path, 'r') as file:
        data = yaml.safe_load(file)
    return data

위의 함수는 주어진 파일 경로에 있는 YAML 파일을 로드하고, 파이썬 객체로 변환합니다. yaml.safe_load() 함수는 보안 상의 이유로 사용을 권장하며, yaml.load() 함수보다 안전합니다.

YAML 데이터 병합하기

다음으로, 여러 개의 YAML 파일을 로드하여 데이터를 병합하는 함수를 작성해보겠습니다. 아래의 코드를 참고하세요.

def merge_yaml(file_paths):
    merged_data = {}
    for file_path in file_paths:
        data = load_yaml(file_path)
        merged_data.update(data)
    return merged_data

위의 함수는 주어진 파일 경로의 YAML 파일들을 로드한 후, 데이터를 merged_data라는 딕셔너리에 병합합니다. update() 메소드를 사용하여 딕셔너리를 병합할 수 있습니다.

필요한 데이터 필터링하기

YAML 파일의 데이터 중에서 필요한 정보만 추출하기 위해 필터링하는 함수를 작성해보겠습니다. 아래의 코드를 참고하세요.

def filter_data(data, filter_key):
    filtered_data = {}
    for key, value in data.items():
        if filter_key in value:
            filtered_data[key] = value[filter_key]
    return filtered_data

위의 함수는 주어진 데이터에서 필터링 키에 해당하는 값들만 추출하여 filtered_data라는 딕셔너리에 저장합니다. items() 메소드를 사용하여 딕셔너리의 키와 값을 순회할 수 있습니다.

예제 실행하기

위에서 작성한 함수들을 이용하여 예제를 실행해보겠습니다.

file_paths = ['data1.yaml', 'data2.yaml', 'data3.yaml']
merged_data = merge_yaml(file_paths)
filtered_data = filter_data(merged_data, 'category')
print(filtered_data)

위의 코드는 data1.yaml, data2.yaml, data3.yaml 세 개의 YAML 파일을 병합한 후, 'category' 필터링 키를 기준으로 필터링한 결과를 출력합니다.

이번에는 PyYAML을 이용하여 YAML 파일의 데이터를 병합하고 필터링하는 방법에 대해 알아보았습니다. PyYAML은 편리하고 강력한 라이브러리로, YAML 파일을 더 쉽게 다룰 수 있도록 도와줍니다.

참고 자료