YAML #
Pengertian #
YAML (YAML Ain’t Markup Language) adalah format serialisasi data yang dirancang untuk mudah dibaca oleh manusia. YAML sering digunakan untuk konfigurasi dan penyimpanan data karena strukturnya yang mirip dengan JSON tetapi lebih mudah dibaca. Python mendukung YAML melalui pustaka PyYAML
.
Instalasi PyYAML #
Anda perlu menginstal pustaka PyYAML
terlebih dahulu:
pip install pyyaml
Operasi Dasar #
Berikut adalah beberapa operasi dasar yang dapat dilakukan dengan PyYAML di Python:
Memuat YAML #
-
Dari String YAML: Menggunakan
yaml.safe_load()
import yaml yaml_string = """ name: Alice age: 25 city: New York """ data = yaml.safe_load(yaml_string) print(data) # Output: {'name': 'Alice', 'age': 25, 'city': 'New York'}
-
Dari File YAML: Menggunakan
yaml.safe_load()
import yaml with open('data.yaml', 'r') as file: data = yaml.safe_load(file) print(data) # Output tergantung pada isi dari data.yaml
Menghasilkan YAML #
-
Ke String YAML: Menggunakan
yaml.dump()
import yaml data = {'name': 'Alice', 'age': 25, 'city': 'New York'} yaml_string = yaml.dump(data) print(yaml_string) # Output: # age: 25 # city: New York # name: Alice
-
Ke File YAML: Menggunakan
yaml.dump()
import yaml data = {'name': 'Alice', 'age': 25, 'city': 'New York'} with open('data.yaml', 'w') as file: yaml.dump(data, file)
Fitur Lanjutan #
yaml.FullLoader
#
yaml.safe_load()
hanya memuat subset aman dari YAML. Untuk memuat seluruh dokumen YAML, Anda bisa menggunakan yaml.load()
dengan FullLoader
.
import yaml
yaml_string = """
name: Alice
age: 25
city: New York
"""
data = yaml.load(yaml_string, Loader=yaml.FullLoader)
print(data)
# Output: {'name': 'Alice', 'age': 25, 'city': 'New York'}
Tipe Data Kustom #
Anda bisa mendefinisikan handler khusus untuk tipe data kustom dalam YAML.
import yaml
class Person:
def __init__(self, name, age, city):
self.name = name
self.age = age
self.city = city
def person_representer(dumper, data):
return dumper.represent_dict({
'name': data.name,
'age': data.age,
'city': data.city
})
def person_constructor(loader, node):
value = loader.construct_mapping(node)
return Person(**value)
yaml.add_representer(Person, person_representer)
yaml.add_constructor('!Person', person_constructor)
# Menulis YAML dengan tipe data kustom
person = Person('Alice', 25, 'New York')
yaml_string = yaml.dump(person)
print(yaml_string)
# Output:
# age: 25
# city: New York
# name: Alice
# Membaca YAML dengan tipe data kustom
yaml_string = """
!Person
name: Alice
age: 25
city: New York
"""
person = yaml.load(yaml_string, Loader=yaml.FullLoader)
print(person)
# Output: <__main__.Person object at 0x7f9f84c0c190>
print(person.name, person.age, person.city)
# Output: Alice 25 New York
Kesimpulan #
PyYAML memungkinkan Anda untuk memuat dan menulis data YAML dengan mudah di Python. Operasi dasar seperti memuat dan menghasilkan YAML dari/ke string atau file dapat dilakukan dengan yaml.safe_load()
dan yaml.dump()
. Untuk penggunaan yang lebih kompleks, seperti menangani tipe data kustom, Anda dapat mendefinisikan representer dan constructor khusus. PyYAML adalah alat yang kuat dan fleksibel untuk bekerja dengan YAML dalam aplikasi Python.