python3 에서 yaml 파일을 다루려면 pyyaml 패키지를 먼저 설치해야 합니다.
python3 -m pip install pyyaml
패키지가 없어서 소스에서 설치할 때는 setup.py 를 실행시킵니다.
python3 setup.py install
사용할 때는 yaml 만 언급하면 됩니다.
import yaml
읽기 - 방법1
test = yaml.load(file("/home/me/test.yaml", "r"), Loader=yaml.SafeLoader)
읽기 - 방법2
data = """
a: 0
b: [1, 2]
c: false
d: 2.456
"""
test = yaml.load(data, Loader=yaml.SafeLoader)
※참고로 Loader 지정 안하면 경고가 따라다닙니다.
t1 = yaml.load("a: 1")
__main__:1: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
Loader 옵션 쓰기 귀찮으면 yaml.load 대신 yaml.safe_load 를 쓰시면 됩니다.
test = yaml.safe_load(file("/home/me/test.yaml", "r"))
쓰기 - 방법1
with open("/home/me/test.yaml", "w") as f:
yaml.dump(yamldata, f, default_flow_style=False)
쓰기 - 방법2
from pathlib import Path
Path("/home/me/test.yaml").write_text(yaml.dump(yamldata, default_flow_style=False))
※참고로 default_flow_style 은 저장되는 yaml 텍스트의 포맷 스타일을 지정하는 옵션입니다.
이 값이 True 이면 flow style 로 저장되고 False 이면 block style 로 저장됩니다.
flow style 예시
'{a: 0, b: [1, 2], c: false, d: 2.456}'
block style 예시
'a: 0
b:
1
2
c: false
d: 2.456'
기타 필요한 내용이 있으면 추가하도록 하겠습니다.
'IT > python' 카테고리의 다른 글
[python3] pathlib 으로 encoding 지정해서 파일 읽기 (0) | 2023.02.16 |
---|---|
[python3] dict vs if else vs list (0) | 2023.01.26 |
[python3] PIPE 등을 통해 stdin 으로부터 입력 받기 (0) | 2023.01.11 |
[python3] 못생긴 연속된 json 데이터 이쁘게 출력하기 cli version (0) | 2023.01.10 |
[python] "1m" 등의 문자열을 받아 시간으로 변환하기 (0) | 2022.09.28 |