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

이번 포스트에서는 PyYAML 라이브러리를 사용하여 YAML 파일의 데이터를 병합하고 암호화하는 방법에 대해 알아보겠습니다.

개요

YAML 파일은 사람이 읽기 쉽고 이해하기 쉬운 형식으로 데이터를 저장하는 파일 형식입니다. 때때로 YAML 파일의 데이터를 병합하여 하나의 YAML 파일로 통합해야 할 때가 있습니다. 또한, 중요한 데이터를 보호하기 위해 암호화하여 저장해야 할 수도 있습니다. PyYAML 라이브러리는 이러한 작업을 쉽게 수행할 수 있는 도구를 제공합니다.

필요한 라이브러리 설치

먼저, PyYAML 라이브러리를 설치해야 합니다. 다음 명령을 사용하여 설치할 수 있습니다:

pip install pyyaml

YAML 파일 병합하기

다음은 PyYAML을 사용하여 YAML 파일을 병합하는 예제 코드입니다.

import yaml

def merge_yaml_files(file1, file2, output_file):
    with open(file1, 'r') as f1, open(file2, 'r') as f2:
        data1 = yaml.safe_load(f1)
        data2 = yaml.safe_load(f2)

        merged_data = {**data1, **data2}  # Merge data1 and data2

    with open(output_file, 'w') as f:
        yaml.dump(merged_data, f)

# Example usage
merge_yaml_files('file1.yaml', 'file2.yaml', 'merged.yaml')

위의 코드에서 merge_yaml_files 함수는 두 개의 YAML 파일을 읽고, 데이터를 병합한 후, 새로운 YAML 파일에 저장하는 역할을 합니다. ** 연산자를 사용하여 data1data2를 병합하였습니다. 마지막으로, yaml.dump 함수를 사용하여 병합된 데이터를 새로운 YAML 파일에 저장하였습니다.

YAML 파일 암호화하기

YAML 파일에 저장된 중요한 데이터를 보호하기 위해 암호화를 적용할 수 있습니다. 다음은 암호화된 YAML 파일을 생성하는 예제 코드입니다.

import yaml
import cryptography
from cryptography.fernet import Fernet

def encrypt_yaml_file(input_file, key, output_file):
    with open(input_file, 'r') as f:
        data = f.read().encode('utf-8')

    fernet = Fernet(key)
    encrypted_data = fernet.encrypt(data)

    with open(output_file, 'wb') as f:
        f.write(encrypted_data)

# Example usage
encryption_key = Fernet.generate_key()
encrypt_yaml_file('data.yaml', encryption_key, 'encrypted_data.yaml')

위의 코드에서 encrypt_yaml_file 함수는 주어진 입력 파일을 읽어서 데이터를 암호화한 후, 새로운 파일에 저장하는 역할을 합니다. cryptography 라이브러리의 Fernet 클래스를 사용하여 암호화 키를 생성하고, 암호화된 데이터를 생성합니다. 마지막으로, 암호화된 데이터를 새로운 YAML 파일에 저장합니다.

마무리

이번 포스트에서는 PyYAML을 사용하여 YAML 파일의 데이터를 병합하고 암호화하는 방법에 대해 알아보았습니다. PyYAML은 유연하고 강력한 YAML 처리 라이브러리이며, 다양한 YAML 파일 작업에 사용할 수 있습니다.

참고 자료