Python 으로 프로필 형식 분석 하기

4869 단어 Python프로필
첫 번 째 단 계 는 설정 파일 의 형식 을 선택 하 는 것 입 니 다:INI,JSON,YAML 또는 TOML.
프로그램 은 명령 행 매개 변수 나 환경 변수 로 서 충분 한 매개 변 수 를 필요 로 하기 도 합 니 다.이 경우 설정 파일 을 사용 해 야 합 니 다.
몇 가지 유행 하 는 프로필 형식 이 있 습 니 다.여기 에는 오래된(때로는 정의 가 명확 하지 않 을 때 도 있 지만)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,
    )
JSON
JSON(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)
INI
INI 형식 은 처음에는 윈도 에서 만 유행 하 다가 설정 표준 형식 이 되 었 다.
이것 은 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)
YAML
YAML(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)
TOML
TOML(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 은 대부분의 유행 하 는 형식 을 소량 코드 로 해석 할 수 있 습 니 다.
파 이 썬 을 사용 하여 프로필 형식 을 분석 하 는 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 분석 프로필 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기