1. 라이브러리 설치
pip install PyYAML
2. 사용법
PyYAML을 설치후 import하여 아래와 같이 사용할 수 있다. 반환된 data 변수는 dictionary 타입을 가진다.
import yaml
yaml_path = "./settings.yaml"
with open(yaml_path, "r") as f:
data = yaml.safe_load(f)
batch_size = data['hyperparameters']['BatchSize']
print(f"batch_size: {batch_size}")
>> 출력
batch_size: 32
2.1 dictionary를 argparse.Namespace()를 사용해서 편하게 사용하기
Namespace는 argparse 내부에 있는 클래스로 attribute를 저장하기 위해 사용하는 간단한 오브젝트이다. 해당 오브젝트를 사용하여 dict를 편하게 사용할 수 있도록 변경할 수 있다.
def dict2namespace(config):
namespace = argparse.Namespace()
for key, value in config.items():
if isinstance(value, dict):
new_value = dict2namespace(value)
else:
new_value = value
setattr(namespace, key, new_value)
return namespace
setattr은 첫 번째 매개변수로 주어진 객체에서 key값을 new_value로 변경한다.
전체 사용 예시 코드
import yaml
import argparse
def dict2namespace(config):
namespace = argparse.Namespace()
for key, value in config.items():
if isinstance(value, dict):
new_value = dict2namespace(value)
else:
new_value = value
setattr(namespace, key, new_value)
return namespace
if __name__ == "__main__":
yaml_path = "./settings.yaml"
with open(yaml_path, "r") as f:
config = yaml.safe_load(f)
new_config = dict2namespace(config)
batch_size = new_config.hyperparameters.BatchSize
print(f"batch size: {batch_size}")
참고자료
https://docs.python.org/ko/3/library/argparse.html#the-namespace-object
'Python 관련 > Python' 카테고리의 다른 글
[Python, Docker] Docker container에서 pip로 패키지 설치가 안될 때 (0) | 2024.06.25 |
---|---|
[Python] sys.exc_info() 사용법과 이해 (0) | 2024.05.02 |
[Python] traceback 사용법 (0) | 2024.05.02 |