tomllib — TOML 파일 파싱
tomllib — TOML 파일 파싱
TOML 1.0.0 (Tom's Obvious Minimal Language, https://toml.io) 을 파싱하는 인터페이스를 제공하는 모듈이에요. 파이썬 3.11에서 새로 추가됐고, TOML 작성은 지원하지 않아요.
본문
경고: 신뢰할 수 없는 출처의 데이터를 파싱할 때는 주의하세요. 악의적인 TOML 문자열은 디코더가 상당한 CPU와 메모리 자원을 소모하게 만들 수 있어요. 파싱할 데이터의 크기를 제한하는 것을 권장합니다.
참고: Tomli-W 패키지는 이 모듈과 함께 쓸 수 있는 TOML 작성자예요. 표준 라이브러리
marshal·pickle모듈 사용자에게 익숙한 작성 API를 제공하죠. 또 TOML Kit 패키지는 읽기·쓰기를 모두 지원하는 스타일 보존 TOML 라이브러리입니다. 이미 존재하는 TOML 파일을 편집할 때는 이 모듈 대신 TOML Kit을 쓰는 걸 권장해요.
이 모듈은 다음 함수들을 정의합니다.
tomllib.load(fp, /, *, parse_float=float)
TOML 파일을 읽어요. 첫 번째 인자는 읽기 가능한 바이너리 파일 객체여야 해요. dict를 반환하고, TOML 타입을 파이썬으로 변환할 때는 아래 변환 표를 사용합니다.
parse_float는 디코딩할 모든 TOML float의 문자열에 호출될 거예요. 기본적으로 float(num_str)과 동등합니다. 이걸 이용해 TOML float에 다른 데이터 타입이나 파서를 쓸 수 있어요 (예: decimal.Decimal). 이 콜러블이 dict나 list를 반환하면 ValueError가 발생합니다.
잘못된 TOML 문서면 TOMLDecodeError가 발생해요.
tomllib.loads(s, /, *, parse_float=float)
str 객체에서 TOML을 불러와요. dict를 반환하고 아래 변환 표로 TOML 타입을 파이썬으로 변환합니다. parse_float 인자는 load()와 같은 의미예요.
잘못된 TOML 문서면 TOMLDecodeError가 발생합니다.
예외
exception tomllib.TOMLDecodeError(msg, doc, pos)
ValueError의 서브클래스로, 다음과 같은 추가 속성을 가져요.
msg— 형식이 지정되지 않은 오류 메시지doc— 파싱 중이던 TOML 문서pos— 파싱이 실패한doc의 인덱스lineno—pos에 해당하는 줄colno—pos에 해당하는 열
버전 3.14에서 변경:
msg·doc·pos매개변수가 추가되고,msg·doc·pos·lineno·colno속성이 추가되었습니다.버전 3.14부터 폐기(deprecated): 자유 형식 위치 인자 전달은 폐기되었습니다.
Examples (예시)
TOML 파일 파싱:
import tomllib
with open("pyproject.toml", "rb") as f:
data = tomllib.load(f)
TOML 문자열 파싱:
import tomllib
toml_str = """
python-version = "3.11.0"
python-implementation = "CPython"
"""
data = tomllib.loads(toml_str)
Conversion Table (변환 표)
| TOML | Python |
|---|---|
| TOML document | dict |
| string | str |
| integer | int |
| float | float (configurable with parse_float) |
| boolean | bool |
| offset date-time | datetime.datetime (tzinfo attribute set to an instance of datetime.timezone) |
| local date-time | datetime.datetime (tzinfo attribute set to None) |
| local date | datetime.date |
| local time | datetime.time |
| array | list |
| table | dict |
| inline table | dict |
| array of tables | list of dicts |