1. Apa itu YAML?
Gambaran Umum YAML
YAML (YAML Ain’t Markup Language) adalah salah satu format serialisasi data yang banyak digunakan untuk merepresentasikan data terstruktur. YAML mirip dengan JSON atau XML, namun keunggulannya ada pada kesederhanaan dan keterbacaan tinggi. Secara khusus, YAML menggunakan indentasi untuk merepresentasikan struktur hierarki, sehingga lebih mudah dibaca oleh manusia.
Perbedaan dengan JSON dan XML
JSON dan XML juga digunakan untuk mendeskripsikan data, tetapi YAML lebih sederhana karena tidak banyak menggunakan simbol berulang. Misalnya, JSON banyak menggunakan kurung kurawal {}
dan koma ,
, yang membuat data besar sulit dibaca. Sebaliknya, YAML menampilkan struktur melalui indentasi, sehingga lebih mudah dipahami secara visual.
Kecocokan dengan Python
Sintaks Python menggunakan indentasi untuk menunjukkan blok kode, sehingga sangat selaras dengan format YAML. Dengan bantuan library “PyYAML”, YAML dapat dengan mudah dibaca maupun ditulis di Python, dan sering digunakan sebagai file konfigurasi.

2. Cara Membaca dan Menulis File YAML di Python
Membaca File YAML
Untuk membaca file YAML di Python, pertama instal library “PyYAML” dan gunakan fungsi yaml.safe_load()
. Fungsi ini mengubah data YAML menjadi dictionary atau list Python dengan cara yang aman. Contoh kode dasar:
import yaml
# Membuka file YAML dan membacanya
with open('config.yaml', 'r') as file:
data = yaml.safe_load(file)
print(data)
Kode ini akan membaca file YAML dan mengonversinya menjadi dictionary Python. Misalnya, file YAML berikut:
database:
host: localhost
port: 3306
akan dibaca Python sebagai:
{'database': {'host': 'localhost', 'port': 3306}}
Menulis File YAML
Untuk menulis data Python ke format YAML, gunakan fungsi yaml.dump()
. Contoh:
import yaml
data = {
'name': 'John Doe',
'age': 30,
'city': 'New York'
}
with open('output.yaml', 'w') as file:
yaml.dump(data, file)
Kode ini akan menyimpan dictionary data
ke file output.yaml
. Hasilnya:
age: 30
city: New York
name: John Doe
Menggunakan Bahasa Non-Latin (contoh: Jepang)
Jika menggunakan karakter non-Latin dalam YAML, untuk mencegah masalah encoding disarankan menambahkan opsi allow_unicode=True
.
yaml.dump(data, file, allow_unicode=True)

3. Operasi YAML Lanjutan
Membuat Tag Kustom
YAML tidak hanya mendukung tipe data dasar (list, dictionary), tetapi juga dapat menyimpan dan memuat kembali objek Python. Dalam hal ini digunakan tag kustom. Contoh berikut menyimpan kelas Python dalam format YAML:
import yaml
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def person_representer(dumper, data):
return dumper.represent_mapping('!Person', {'name': data.name, 'age': data.age})
def person_constructor(loader, node):
values = loader.construct_mapping(node)
return Person(values['name'], values['age'])
yaml.add_representer(Person, person_representer)
yaml.add_constructor('!Person', person_constructor)
# Simpan objek ke YAML
person = Person('Alice', 25)
with open('person.yaml', 'w') as file:
yaml.dump(person, file)
# Muat kembali objek dari YAML
with open('person.yaml', 'r') as file:
loaded_person = yaml.load(file, Loader=yaml.FullLoader)
Dengan cara ini, objek Python bisa diserialisasi ke YAML lalu digunakan kembali.
Menjaga Urutan
Secara default PyYAML tidak menjaga urutan dictionary. Jika urutan penting, gunakan ruamel.yaml
, yang akan mempertahankan urutan kunci. Ini sangat bermanfaat untuk file konfigurasi.

4. Contoh Penggunaan YAML: Manajemen File Konfigurasi
Kepraktisan YAML sebagai File Konfigurasi
YAML sering dipakai untuk file konfigurasi, terutama pada aplikasi Python. Karena mudah dibaca dan hierarkinya jelas, YAML cocok untuk menyimpan data seperti koneksi database atau pengaturan logging.
database:
host: localhost
port: 3306
username: user
password: pass
logging:
level: DEBUG
file: /var/log/app.log
Format seperti di atas ringkas dan mudah dipahami.
Penggunaan YAML di Proyek Nyata
YAML digunakan di banyak framework dan tools seperti Django, Flask, CircleCI, dan Kubernetes, terutama untuk konfigurasi dan variabel lingkungan.
Contoh di Django:
import yaml
with open('config.yaml', 'r') as file:
config = yaml.safe_load(file)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': config['database']['name'],
'USER': config['database']['username'],
'PASSWORD': config['database']['password'],
'HOST': config['database']['host'],
'PORT': config['database']['port'],
}
}
Perbandingan dengan JSON dan XML
YAML lebih mudah dibaca dibanding JSON atau XML. JSON membutuhkan banyak tanda kurung dan koma, sementara XML menggunakan tag pembuka dan penutup yang panjang. YAML cukup dengan indentasi.
Perbandingan JSON dan YAML:
{
"database": {
"host": "localhost",
"port": 3306,
"username": "user",
"password": "pass"
},
"logging": {
"level": "DEBUG",
"file": "/var/log/app.log"
}
}
database:
host: localhost
port: 3306
username: user
password: pass
logging:
level: DEBUG
file: /var/log/app.log
YAML jelas lebih ringkas dan mudah dipahami.

5. Troubleshooting dan Error Handling
Error Umum dan Cara Mengatasinya
Salah satu error umum saat bekerja dengan file YAML adalah “file tidak ditemukan” atau “format file tidak valid”. Masalah ini dapat dicegah dengan implementasi error handling yang tepat.
Sebagai contoh, ketika parsing YAML gagal, Anda bisa menangkap exception dengan yaml.YAMLError
. Jika file tidak ada, gunakan FileNotFoundError
untuk menampilkan pesan yang sesuai.
import yaml
def load_yaml(file_path):
try:
with open(file_path, 'r') as file:
data = yaml.safe_load(file)
except FileNotFoundError:
print(f"Error: File {file_path} tidak ditemukan.")
return None
except yaml.YAMLError as e:
print(f"Error: Gagal mem-parsing YAML. {e}")
return None
return data
config = load_yaml('config.yaml')
if config:
print(config)
Best Practice dalam Penanganan Error
- Pemeriksaan keberadaan file: Pastikan file ada sebelum dibaca, jika tidak tampilkan pesan error.
- Menangani error parsing: Jika sintaks YAML salah, tangkap error dan berikan detail pesan.
- Logging: Simpan pesan error di log file agar bisa ditinjau untuk troubleshooting di kemudian hari.
6. Ringkasan
YAML adalah format serialisasi data yang sederhana dan mudah dibaca manusia. Membaca dan menulis YAML di Python sangat mudah, terutama dengan library PyYAML. YAML banyak dipakai untuk manajemen file konfigurasi, mendukung tag kustom, serialisasi kelas, serta menjaga urutan dengan library tambahan seperti ruamel.yaml
.
Selain konfigurasi, YAML juga banyak digunakan sebagai format penyimpanan data di berbagai proyek, dan penggunaannya diperkirakan akan terus meningkat di masa mendatang.