푸터 콘텐츠로 바로가기
PYTHON 도움말

PyYAML (개발자를 위한 작동 방식)

PyYAML 은 YAML 파서 및 생성기 역할을 하는 Python 라이브러리입니다. YAML(YAML Ain't Markup Language)은 Python 애플리케이션과 잘 통합되는 사람이 읽을 수 있는 데이터 직렬화 형식으로, 뛰어난 오류 지원, 강력한 확장 API 등의 기능을 제공합니다. YAML은 가독성을 고려하여 서로 다른 데이터 구조를 가진 언어 간의 설정 파일 및 데이터 교환에 자주 사용됩니다. 이 글의 뒷부분에서는 Iron Software 에서 개발한 PDF 생성 Python 패키지인 IronPDF 에 대해 살펴보겠습니다.

PyYAML의 주요 기능

  1. 사람이 읽기 쉬운 형식: YAML은 읽고 쓰기 쉽도록 설계되어 복잡한 설정 파일 및 데이터 직렬화에 이상적입니다.
  2. 완벽한 YAML 1.1 지원: PyYAML은 유니코드 지원 및 사용자 정의 데이터 유형을 포함하여 YAML 1.1 사양을 완벽하게 지원합니다.
  3. Python과의 통합: PyYAML은 임의의 Python 객체를 표현할 수 있는 Python 전용 태그를 제공하여 다양한 응용 분야에서 활용할 수 있도록 합니다.
  4. 오류 처리: PyYAML은 디버깅 중에 매우 유용한 적절한 오류 메시지를 제공합니다.

설치

YAML 패키지를 설치하려면 pip를 사용할 수 있습니다.

pip install pyyaml
pip install pyyaml
SHELL

기본 사용법

다음은 PyYAML을 사용하여 임의의 Python 객체에 YAML 문서를 로드하고 내보내는 간단한 예입니다.

import yaml

# Sample YAML data
yaml_data = """
name: John Doe
age: 30
children:
  - name: Jane Doe
    age: 10
  - name: Jim Doe
    age: 8
"""

# Load YAML data into a Python dictionary
data = yaml.safe_load(yaml_data)
print(data)

# Dump Python data back to formatted YAML
yaml_output = yaml.dump(data, default_flow_style=False)
print(yaml_output)
import yaml

# Sample YAML data
yaml_data = """
name: John Doe
age: 30
children:
  - name: Jane Doe
    age: 10
  - name: Jim Doe
    age: 8
"""

# Load YAML data into a Python dictionary
data = yaml.safe_load(yaml_data)
print(data)

# Dump Python data back to formatted YAML
yaml_output = yaml.dump(data, default_flow_style=False)
print(yaml_output)
PYTHON

출력

PyYAML (개발자를 위한 작동 방식): 그림 1

고급 기능

  1. 사용자 정의 데이터 유형: PyYAML을 사용하면 표준 YAML 형식에서 복잡한 데이터 유형을 처리하기 위한 사용자 정의 생성자와 표현자를 정의할 수 있습니다.
import yaml

# Define a custom Python object
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

# Function to convert a Person object to a YAML representation
def person_representer(dumper, data):
    return dumper.represent_mapping('!Person', {'name': data.name, 'age': data.age})

# Function to create a Person object from YAML representation
def person_constructor(loader, node):
    values = loader.construct_mapping(node)
    return Person(**values)

# Register custom representer and constructor for Person
yaml.add_representer(Person, person_representer)
yaml.add_constructor('!Person', person_constructor)

# Object Serialization
person = Person(name='John Doe', age=30)
yaml_data = yaml.dump(person)
print(yaml_data)

# Deserialize YAML to a Person object
loaded_person = yaml.load(yaml_data, Loader=yaml.FullLoader)
print(loaded_person.name, loaded_person.age)
import yaml

# Define a custom Python object
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

# Function to convert a Person object to a YAML representation
def person_representer(dumper, data):
    return dumper.represent_mapping('!Person', {'name': data.name, 'age': data.age})

# Function to create a Person object from YAML representation
def person_constructor(loader, node):
    values = loader.construct_mapping(node)
    return Person(**values)

# Register custom representer and constructor for Person
yaml.add_representer(Person, person_representer)
yaml.add_constructor('!Person', person_constructor)

# Object Serialization
person = Person(name='John Doe', age=30)
yaml_data = yaml.dump(person)
print(yaml_data)

# Deserialize YAML to a Person object
loaded_person = yaml.load(yaml_data, Loader=yaml.FullLoader)
print(loaded_person.name, loaded_person.age)
PYTHON

출력

PyYAML (개발자를 위한 작동 방식): 그림 2

  1. 대용량 파일 처리: PyYAML은 스트림 기반 로딩 및 덤프 방식을 사용하여 여러 개의 YAML 문서 또는 대용량 YAML 파일을 효율적으로 처리할 수 있습니다.
import yaml

# Load a large YAML file
with open('large_file.yaml', 'r') as file:
    data = yaml.safe_load(file)

# Dump data to a large YAML file
with open('output_file.yaml', 'w') as file:
    yaml.dump(data, file)
import yaml

# Load a large YAML file
with open('large_file.yaml', 'r') as file:
    data = yaml.safe_load(file)

# Dump data to a large YAML file
with open('output_file.yaml', 'w') as file:
    yaml.dump(data, file)
PYTHON

출력

PyYAML (개발자를 위한 작동 방식): 그림 3

IronPDF 소개합니다

PyYAML (개발자를 위한 작동 방식): 그림 4

IronPDF 는 HTML, CSS, 이미지 및 JavaScript 사용하여 PDF를 생성, 편집 및 서명하도록 설계된 강력한 Python 라이브러리입니다. 이 제품은 낮은 메모리 사용량으로 상업용 수준의 성능을 제공합니다. 주요 특징은 다음과 같습니다.

  • HTML을 PDF로 변환: HTML 파일, HTML 문자열 및 URL을 PDF로 변환합니다. 예를 들어, Chrome PDF 렌더러를 사용하여 웹페이지를 PDF로 렌더링할 수 있습니다.

  • 크로스 플랫폼 지원: .NET Core, .NET Standard 및 .NET Framework 포함한 다양한 .NET 플랫폼과 호환됩니다. 이 프로그램은 윈도우, 리눅스, macOS를 지원합니다.

  • 편집 및 서명: 속성을 설정하고, 암호 및 권한으로 보안을 추가하고, PDF에 디지털 서명을 적용할 수 있습니다.

  • 페이지 템플릿 및 설정: 머리글, 바닥글, 페이지 번호 및 조정 가능한 여백을 사용하여 PDF를 사용자 지정할 수 있습니다. IronPDF 반응형 레이아웃과 사용자 지정 용지 크기를 지원합니다.

  • 표준 준수: IronPDF PDF/A 및 PDF/UA와 같은 PDF 표준을 준수합니다. 이 라이브러리는 UTF-8 문자 인코딩을 지원하며 이미지, CSS, 글꼴과 같은 자산을 처리합니다.

IronPDF 와 PyYAML을 사용하여 PDF 문서를 생성합니다.

import yaml
import json
from ironpdf import *

# Apply your license key
License.LicenseKey = "your license"

# Sample YAML data
yaml_data = """
name: IronPDF User1
age: 25
children:
  - name: IronPDF User2
    age: 23
  - name: IronPDF User3
    age: 24
"""

# Load YAML data into Python structures
data = yaml.safe_load(yaml_data)
print(data)

# Dump Python data back to YAML
yaml_output = yaml.dump(data, default_flow_style=False)
print(yaml_output)

# Write YAML to File
with open('output_file.yaml', 'w') as file:
    yaml.dump(yaml_output, file)

# Write YAML data as JSON
with open('output_file.json', 'w') as json_file:
    json.dump(data, json_file)

# Read JSON and format with indentation for readability
output = json.dumps(json.load(open('output_file.json')), indent=2)
print(output)

# Create PDF renderer
renderer = ChromePdfRenderer()

# Create a PDF from HTML containing YAML data
content = "<h1>Awesome Iron PDF with PyYAML</h1>"
content += "<p>YAML data: " + yaml_output + "</p>"
pdf = renderer.RenderHtmlAsPdf(content)

# Save the PDF document to a file
pdf.SaveAs("awesome.pdf")
import yaml
import json
from ironpdf import *

# Apply your license key
License.LicenseKey = "your license"

# Sample YAML data
yaml_data = """
name: IronPDF User1
age: 25
children:
  - name: IronPDF User2
    age: 23
  - name: IronPDF User3
    age: 24
"""

# Load YAML data into Python structures
data = yaml.safe_load(yaml_data)
print(data)

# Dump Python data back to YAML
yaml_output = yaml.dump(data, default_flow_style=False)
print(yaml_output)

# Write YAML to File
with open('output_file.yaml', 'w') as file:
    yaml.dump(yaml_output, file)

# Write YAML data as JSON
with open('output_file.json', 'w') as json_file:
    json.dump(data, json_file)

# Read JSON and format with indentation for readability
output = json.dumps(json.load(open('output_file.json')), indent=2)
print(output)

# Create PDF renderer
renderer = ChromePdfRenderer()

# Create a PDF from HTML containing YAML data
content = "<h1>Awesome Iron PDF with PyYAML</h1>"
content += "<p>YAML data: " + yaml_output + "</p>"
pdf = renderer.RenderHtmlAsPdf(content)

# Save the PDF document to a file
pdf.SaveAs("awesome.pdf")
PYTHON

코드 설명

  1. 수입:

    • 필요한 라이브러리를 가져옵니다: YAML 작업을 위한 yaml, JSON 작업을 위한 json, 그리고 PDF 생성을 위한 ironpdf.
  2. 라이선스 키 설정:

    • IronPDF 라이브러리에 대한 합법적이고 기능적인 접근을 위한 라이선스 키를 설정합니다.
  3. YAML 데이터 예시:

    • YAML 연산 시연을 위한 샘플 YAML 데이터를 정의합니다.
  4. YAML 작업:

    • yaml.safe_load()을(를) 사용하여 YAML 데이터를 Python 객체로 변환하여 조작합니다.
  5. YAML로 내보내기:

    • yaml.dump()을(를) 사용하여 Python 객체를 다시 YAML 형식으로 변환하여 출력합니다.
  6. 파일에 쓰기:

    • YAML 데이터는 YAML 파일로, JSON 데이터는 JSON 파일로 내보내어 저장 또는 전송할 수 있습니다.
  7. JSON 읽기 및 형식 지정:

    • 파일에서 JSON 데이터를 읽고 json.dumps()을(를) 사용하여 가독성을 위해 형식을 지정합니다.
  8. IronPDF 이용한 PDF 생성:

    • IronPDF 사용하여 HTML 문자열을 PDF 문서로 렌더링하고, YAML 데이터를 내장합니다.
  9. PDF 저장:

    • 생성된 PDF 파일을 파일 시스템에 저장하여 프로그램으로 PDF를 생성하는 방법을 보여줍니다.

출력

PyYAML (개발자를 위한 작동 방식): 그림 5

PDF

PyYAML (개발자를 위한 작동 방식): 그림 6

IronPDF 라이선스

IronPDF Python 라이선스 키를 사용하여 실행됩니다. IronPDF for Python은 사용자가 구매 전에 다양한 기능을 확인해 볼 수 있도록 무료 평가판 라이선스 키를 제공합니다.

IronPDF 패키지를 사용하기 전에 스크립트 시작 부분에 라이선스 키를 배치하십시오.

from ironpdf import *

# Apply your license key
License.LicenseKey = "key"
from ironpdf import *

# Apply your license key
License.LicenseKey = "key"
PYTHON

결론

PyYAML은 Python에서 YAML을 다루기 위한 강력하고 유연한 라이브러리입니다. 읽기 쉬운 형식, 완벽한 YAML 1.1 지원, 그리고 Python과의 통합 덕분에 설정 파일, 데이터 직렬화 등에 매우 적합합니다. 간단한 설정이든 복잡한 데이터 구조든, PyYAML은 YAML 데이터를 효과적으로 처리하는 데 필요한 도구를 제공합니다.

IronPDF 는 HTML 콘텐츠를 PDF 문서로 변환하는 작업을 용이하게 해주는 Python 패키지입니다. 이 라이브러리는 개발자가 HTML에서 고품질 PDF를 생성할 수 있도록 간단한 API(ChromePdfRenderer)를 제공하며, CSS 및 JavaScript 와 같은 최신 웹 표준도 지원합니다. 이러한 특징 덕분에 Python 애플리케이션에서 PDF 문서를 동적으로 생성하고 저장하는 데 효과적인 도구가 됩니다.

커티스 차우
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해