Python 으로 프로필 형식 분석 하기
프로그램 은 명령 행 매개 변수 나 환경 변수 로 서 충분 한 매개 변 수 를 필요 로 하기 도 합 니 다.이 경우 설정 파일 을 사용 해 야 합 니 다.
몇 가지 유행 하 는 프로필 형식 이 있 습 니 다.여기 에는 오래된(때로는 정의 가 명확 하지 않 을 때 도 있 지만)INI 포맷,유행 하지만 때로는 손 으로 쓰기 어 려 운 JSON 포맷,광범 위 하지만 때로는 세부 적 인 면 에서 의외 의 YAML 포맷,그리고 많은 사람들 이 아직 듣 지 못 한 최신 TOML 포맷 이 포함 됐다.
당신 의 첫 번 째 임 무 는 형식 을 선택 한 후에 그 선택 을 기록 하 는 것 입 니 다.이 간단 한 부분 을 해결 한 후에 설정 을 해석 할 때 가 되 었 다.
때때로 설정 에서'추상 적'데이터 와 대응 하 는 클래스 를 가지 고 있 는 것 은 좋 은 생각 이다.이 코드 는 설정 에 대해 아무것도 하지 않 기 때문에 해석 논 리 를 보 여 주 는 가장 간단 한 방식 입 니 다.
파일 프로세서 의 설정 을 상상 해 보 세 요.입력 디 렉 터 리,출력 디 렉 터 리,추출 할 파일 을 포함 합 니 다.
설정 클래스 의 추상 적 인 정 의 는 다음 과 유사 할 수 있 습 니 다:
from__future__import annotations
import attr
@attr.frozen
class Configuration:
@attr.frozen
class Files:
input_dir:str
output_dir:str
files: Files
@attr.frozen
class Parameters:
patterns: List[str]
parameters: Parameters
형식 에 특 정 된 코드 를 더욱 간단하게 하기 위해 서 는 사전 에서 이러한 것 을 해석 하 는 함 수 를 만들어 야 합 니 다.이 가설 설정 은 밑줄 이 아 닌 디 폴 트 번 호 를 사용 할 것 입 니 다.이런 차 이 는 결코 드 물 지 않다.
def configuration_from_dict(details):
files = Configuration.Files(
input_dir=details["files"]["input-dir"],
output_dir=details["files"]["output-dir"],
)
parameters = Configuration.Paraneters(
patterns=details["parameters"]["patterns"]
)
return Configuration(
files=files,
parameters=parameters,
)
JSONJSON(JavaScript Object Notation)은 JavaScript 와 유사 한 형식 입 니 다.
다음은 JSON 형식의 예제 설정 입 니 다.
json_config = """
{
"files": {
"input-dir": "inputs",
"output-dir": "outputs"
},
"parameters": {
"patterns": [
"*.txt",
"*.md"
]
}
}
"""
분석 논 리 는 json 모듈 을 사용 하여 JSON 을 Python 의 내 장 된 데이터 구조(사전,목록,문자열)로 해석 한 다음 사전 에서 클래스 를 만 듭 니 다.
import json
def configuration_from_json(data):
parsed = json.loads(data)
return configuration_from_dict(parsed)
INIINI 형식 은 처음에는 윈도 에서 만 유행 하 다가 설정 표준 형식 이 되 었 다.
이것 은 INI 와 같은 설정 입 니 다:
ini_config="""
[files]
input-dir = inputs
output-dir = outputs
[parameters]
patterns = ['*.txt', '*.md']
"""
Python 은 내 장 된 configparser 모듈 을 사용 하여 분석 할 수 있 습 니 다.해상도 dict 의 대상 이기 때문에 직접 전달 할 수 있 습 니 다. configuration_from_dict :
import configparser
def configuration_from_ini(data):
parser=configparser.ConfigParser()
parser.read_string(data)
return configuration_from_dict(parser)
YAMLYAML(Yet Another Markup Language)은 JSON 의 확장 으로 수 동 으로 쉽게 작성 할 수 있 도록 합 니 다.이 를 실현 하기 위해 서 는,일부 원인 은 긴 규범 이 있 기 때문이다.
다음은 YAML 의 같은 설정 입 니 다.
yaml_config = """
files:
input-dir: inputs
output-dir: outputs
parameters:
patterns:
- '*.txt'
- '*.md'
"""
파 이 썬 이 그것 을 해석 하려 면 제3자 모듈 을 설치 해 야 합 니 다.가장 인기 있 는 것 은 PyYAML(pip install pyyaml)이다.YAML 해상도 기 는 다시 전달 할 수 있 습 니 다. configuration_from_dict 내 장 된 Python 데이터 형식 입 니 다.그러나 YAML 해상도 기 는 바이트 흐름 이 필요 하기 때문에 문자열 을 바이트 흐름 으로 변환 해 야 합 니 다.
import io
import yaml
def configuration_from_yaml(data):
fp = io.StringIO(data)
parsed = yaml.safe_load(fp)
return configuration_from_dict(parsed)
TOMLTOML(Tom's Own Markup Language)은 YAML 의 경량급 대체 품 이 되 기 위 한 것 이다.그 규범 이 비교적 짧 아서 이미 일부 지역 에서 유행 하고 있다(예 를 들 어 Rust 의 가방 관리자 인 Cargo 는 이 를 통 해 가방 설정 을 한다).
이것 은 TOML 과 같은 설정 입 니 다.
toml_config= """
[files]
input-dir = "inputs"
output-dir = "outputs"
[parameters]
patterns = [ "*.txt", "*.md",]
"""
TOML 을 분석 하기 위해 서 는 제3자 패 키 지 를 설치 해 야 합 니 다.가장 유행 하 는 것 은 간단하게 toml 이 라 고 불 린 다.YAML 과 JSON 과 마찬가지 로 기본 Python 데이터 형식 을 되 돌려 줍 니 다.
import toml
def configuration_from_toml(data):
parsed = toml.loads(data)
return configuration_from_dict(parsed)
총결산설정 형식 을 선택 하 는 것 은 미묘 한 균형 이다.그러나 결정 을 내리 면 Python 은 대부분의 유행 하 는 형식 을 소량 코드 로 해석 할 수 있 습 니 다.
파 이 썬 을 사용 하여 프로필 형식 을 분석 하 는 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 분석 프로필 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.