Przejdź do treści stopki
POMOC DOTYCZąCA JęZYKA PYTHON

PyYAML (Jak działa dla programistów)

PyYAML to biblioteka języka Python, która działa jako parser i emiter YAML. YAML (YAML Ain't Markup Language) to czytelny dla człowieka format serializacji danych, który dobrze integruje się z aplikacjami w języku Python, oferuje doskonałą obsługę błędów, rozbudowane API rozszerzeń i wiele więcej. YAML jest często używany do tworzenia plików konfiguracyjnych i wymiany danych między językami o różnych strukturach danych, z myślą o czytelności dla człowieka. W dalszej części tego artykułu przyjrzymy się IronPDF, pakietowi do generowania plików PDF w języku Python firmy Iron Software.

Kluczowe cechy PyYAML

  1. Format czytelny dla człowieka: YAML został zaprojektowany tak, aby był łatwy do odczytania i zapisu, co czyni go idealnym rozwiązaniem dla złożonych plików konfiguracyjnych i serializacji danych.
  2. Pełna obsługa YAML 1.1: PyYAML obsługuje pełną specyfikację YAML 1.1, w tym obsługę Unicode i niestandardowe typy danych.
  3. Integracja z Pythonem: PyYAML udostępnia tagi specyficzne dla języka Python, które umożliwiają reprezentację dowolnych obiektów Pythona, dzięki czemu jest wszechstronny w różnych zastosowaniach.
  4. Obsługa błędów: PyYAML oferuje sensowne komunikaty o błędach, które mogą być bardzo pomocne podczas debugowania.

Instalacja

Aby zainstalować pakiet YAML, można użyć pip:

pip install pyyaml
pip install pyyaml
SHELL

Podstawowe zastosowanie

Oto prosty przykład wykorzystania PyYAML do ładowania i zapisywania dokumentu YAML do i z dowolnego obiektu w języku Python.

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

Wynik

PyYAML (Jak to działa dla programistów): Rysunek 1

Zaawansowane funkcje

  1. Niestandardowe typy danych: PyYAML pozwala definiować niestandardowe konstruktory i reprezentatory do obsługi złożonych typów danych w kanonicznym formacie 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

Wynik

PyYAML (Jak to działa dla programistów): Rysunek 2

  1. Obsługa dużych plików: PyYAML może efektywnie obsługiwać wiele dokumentów YAML lub duże pliki YAML, wykorzystując ładowanie i zrzut oparte na strumieniu.
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

Wynik

PyYAML (Jak to działa dla programistów): Rysunek 3

Przedstawiamy IronPDF

PyYAML (Jak to działa dla programistów): Rysunek 4

IronPDF to potężna biblioteka języka Python przeznaczona do tworzenia, edytowania i podpisywania plików PDF przy użyciu HTML, CSS, obrazów i JavaScript. Oferuje wydajność na poziomie komercyjnym przy niewielkim zużyciu pamięci. Najważniejsze cechy to:

  • Konwersja HTML do PDF: Konwertuj pliki HTML, ciągi znaków HTML i adresy URL na pliki PDF. Na przykład, renderuj stronę internetową jako plik PDF przy użyciu renderera PDF przeglądarki Chrome.

  • Obsługa wielu platform: Kompatybilność z różnymi platformami .NET, w tym .NET Core, .NET Standard i .NET Framework. Obsługuje systemy Windows, Linux i macOS.

  • Edycja i podpisywanie: Ustawiaj właściwości, dodawaj zabezpieczenia za pomocą haseł i uprawnień oraz stosuj podpisy cyfrowe w plikach PDF.

  • Szablony stron i ustawienia: Dostosuj pliki PDF za pomocą nagłówków, stopek, numerów stron i regulowanych marginesów. IronPDF obsługuje responsywne układy i niestandardowe rozmiary papieru.

  • Zgodność ze standardami: IronPDF jest zgodny ze standardami PDF, takimi jak PDF/A i PDF/UA. Obsługuje kodowanie znaków UTF-8 oraz pliki takie jak obrazy, CSS i czcionki.

Generowanie dokumentów PDF przy użyciu IronPDF i PyYAML

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

Wyjaśnienie kodu

  1. Importy:

    • Importuje niezbędne biblioteki: yaml do operacji YAML, json do operacji JSON oraz ironpdf do generowania plików PDF.
  2. Ustawianie klucza licencyjnego:

    • Ustawia klucz licencyjny IronPDF w celu uzyskania legalnego i funkcjonalnego dostępu do biblioteki.
  3. Przykładowe dane YAML:

    • Definiuje przykładowe dane YAML w celu zademonstrowania operacji YAML.
  4. Operacje YAML:

    • Konwertuje dane YAML na obiekty Python przy użyciu yaml.safe_load() do manipulacji.
  5. Eksport do YAML:

    • Konwertuje obiekty Python z powrotem do formatu YAML w celu wyświetlenia przy użyciu yaml.dump().
  6. Zapisywanie do plików:

    • Eksportuje dane YAML do pliku YAML, a dane JSON do pliku JSON w celu przechowywania lub przesyłania.
  7. Odczytywanie i formatowanie JSON:

    • Odczytuje dane JSON z pliku i formatuje je w celu zapewnienia czytelności przy użyciu json.dumps().
  8. Generowanie plików PDF za pomocą IronPDF:

    • Wykorzystuje IronPDF do renderowania ciągu znaków HTML do dokumentu PDF, w tym osadzonych danych YAML.
  9. Zapisywanie plików PDF:

    • Zapisuje wygenerowany plik PDF w systemie plików, demonstrując programowe tworzenie plików PDF.

Wynik

PyYAML (Jak to działa dla programistów): Rysunek 5

PDF

PyYAML (Jak to działa dla programistów): Rysunek 6

Licencja IronPDF

IronPDF działa na kluczu licencyjnym dla języka Python. IronPDF for Python oferuje bezplatną licencję probną, aby umożliwić użytkownikom zapoznanie się z jego rozbudowanymi funkcjami przed zakupem.

Umieść klucz licencyjny na początku skryptu przed użyciem pakietu IronPDF:

from ironpdf import *

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

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

Wnioski

PyYAML to potężna i elastyczna biblioteka do pracy z YAML w języku Python. Jego format czytelny dla ludzi, pełna obsługa YAML 1.1 oraz integracja z Pythonem sprawiają, że jest to doskonały wybór do plików konfiguracyjnych, serializacji danych i nie tylko. Niezależnie od tego, czy masz do czynienia z prostymi konfiguracjami, czy złożonymi strukturami danych, PyYAML zapewnia narzędzia potrzebne do efektywnej obsługi danych YAML.

IronPDF to pakiet w języku Python, który ułatwia konwersję treści HTML do dokumentów PDF. Oferuje prosty interfejs API (ChromePdfRenderer), umożliwiający programistom generowanie wysokiej jakości plików PDF z HTML, w tym obsługę nowoczesnych standardów internetowych, takich jak CSS i JavaScript. Dzięki temu jest to skuteczne narzędzie do dynamicznego tworzenia i zapisywania dokumentów PDF bezpośrednio z aplikacji Python.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie