Python’da JSON ve YAML İşleme
Veri işlemede olmazsa olmaz iki format olan JSON ve YAML ile Python’da nasıl çalışacağınızı öğrenmek ister misiniz? Bu makalede, başlangıç seviyesinden ileri seviyeye kadar, Python’da JSON ve YAML dosyalarını okuma, yazma ve manipüle etme konularında adım adım ilerleyeceğiz. Gerçek dünya senaryolarıyla desteklenen örnekler ve ipuçlarıyla, bu iki popüler veri formatını etkili bir şekilde kullanmayı öğreneceksiniz.
JSON ile Tanışma: Python’da JSON Veri İşleme Nasıl Yapılır?
JSON (JavaScript Object Notation), veri alışverişi için yaygın olarak kullanılan bir metin tabanlı veri değişim formatıdır. Hafif yapısı ve okunabilirliği nedeniyle web servisleri ve API’ler arasında veri transferinde sıklıkla tercih edilir. Python’da JSON verileriyle çalışmak için json kütüphanesini kullanırız.
Öncelikle, json kütüphanesini içe aktaralım:
import json
Şimdi, bir JSON verisini nasıl okuyacağımıza bakalım. Diyelim ki, aşağıdaki JSON verisine sahibiz:
{
"ad": "Ahmet",
"soyad": "Yılmaz",
"yas": 30,
"sehir": "İstanbul"
}
Bu JSON verisini bir Python sözlüğüne dönüştürmek için json.loads() fonksiyonunu kullanırız:
json_verisi = """
{
"ad": "Ahmet",
"soyad": "Yılmaz",
"yas": 30,
"sehir": "İstanbul"
}
"""
python_sozlugu = json.loads(json_verisi)
print(python_sozlugu["ad"]) # Çıktı: Ahmet
Tersine, bir Python sözlüğünü JSON verisine dönüştürmek için json.dumps() fonksiyonunu kullanabiliriz:
python_sozlugu = {"ad": "Ayşe", "soyad": "Kara", "yas": 25, "sehir": "Ankara"}
json_verisi = json.dumps(python_sozlugu, indent=4) # indent parametresi çıktı güzelliği için
print(json_verisi)
Bu kod bloğu, Python sözlüğünü güzelce biçimlendirilmiş bir JSON dizesine dönüştürür ve ekrana yazar.
JSON Dosyalarını Okuma ve Yazma: Pratik Bir Örnek
Gerçek bir JSON dosyasıyla çalışmayı ele alalım. Bir JSON dosyası oluşturup, okuyup ve içine veri yazmayı göstereceğiz.
import json
# JSON veri sözlüğü
data = {
"products": [
{"name": "Ürün 1", "price": 100},
{"name": "Ürün 2", "price": 200},
]
}
# JSON dosyasına yazma
with open("urunler.json", "w") as f:
json.dump(data, f, indent=4)
# JSON dosyasını okuma
with open("urunler.json", "r") as f:
okunan_data = json.load(f)
print(okunan_data["products"][0]["name"]) # Çıktı: Ürün 1
Bu örnek, bir JSON dosyası oluşturup, içine veri yazar ve daha sonra bu dosyayı okuyarak verileri kullanmamızı gösterir. indent parametresi, okunabilirliği artırmak için JSON çıktısını biçimlendirir.
YAML ile Tanışma: Python'da YAML Veri İşleme
YAML (YAML Ain't Markup Language), insan okunabilirliği yüksek bir veri seriselleştirme dilidir. JSON'a benzer şekilde veri alışverişinde kullanılabilir, ancak daha okunaklı ve daha karmaşık veri yapılarını daha kolay temsil eder. Python'da YAML ile çalışmak için PyYAML kütüphanesini kullanmamız gerekir. pip install pyyaml komutu ile kurabilirsiniz.
import yaml
Bir YAML dosyasını okumak için yaml.safe_load() fonksiyonunu kullanabiliriz:
ad: Ahmet
soyad: Yılmaz
yas: 30
sehir: İstanbul
Bu YAML verisini Python'a yüklemek için:
yaml_verisi = """
ad: Ahmet
soyad: Yılmaz
yas: 30
sehir: İstanbul
"""
python_sozlugu = yaml.safe_load(yaml_verisi)
print(python_sozlugu["ad"]) # Çıktı: Ahmet
yaml.safe_load() fonksiyonu güvenlik açısından önemlidir. Güvenilir olmayan kaynaklardan gelen YAML verilerini doğrudan yaml.load() ile yüklemeyin, çünkü bu güvenlik açıklarına yol açabilir. safe_load() fonksiyonu daha güvenli bir alternatiftir.
YAML Dosyalarını Okuma ve Yazma: Bir E-ticaret Örneği
Bir e-ticaret sisteminde ürün bilgilerini YAML formatında saklayıp yönetelim.
import yaml
urunler = {
"urunler": [
{"ad": "Kitap", "fiyat": 25, "stok": 100},
{"ad": "Kalem", "fiyat": 5, "stok": 200}
]
}
with open("urunler.yaml", "w") as f:
yaml.dump(urunler, f, default_flow_style=False) # default_flow_style=False daha okunaklı çıktı verir
with open("urunler.yaml", "r") as f:
okunan_urunler = yaml.safe_load(f)
print(okunan_urunler["urunler"][0]["ad"]) # Çıktı: Kitap
Bu örnek, ürün bilgilerini içeren bir YAML dosyası oluşturur, daha sonra bu dosyayı okur ve bilgilerini ekrana basar. default_flow_style=False parametresi, YAML çıktısının daha okunaklı olmasını sağlar.
JSON ve YAML Karşılaştırması: Hangisini Seçmeliyim?
JSON ve YAML, benzer amaçlar için kullanılsa da farklılıkları vardır. JSON, daha basit ve daha yaygın kullanılırken, YAML daha okunaklı ve daha karmaşık veri yapılarını daha iyi destekler. Seçiminizi yaparken projenizin karmaşıklığını ve okunabilirlik gereksinimlerini göz önünde bulundurmalısınız.
| Özellik | JSON | YAML |
|----------------|------------------------------------|---------------------------------------|
| Okunabilirlik | Daha az okunaklı | Daha okunaklı |
| Karmaşıklık | Basit veri yapılarında daha uygun | Karmaşık veri yapılarında daha uygun |
| Yaygınlık | Daha yaygın | Daha az yaygın |
| Desteklenen Tipler | Sınırlı | Daha geniş tip desteği |
İleri Düzey Teknikler: Performans Optimizasyonu ve Hata Yönetimi
Büyük JSON veya YAML dosyalarıyla çalışırken performans önemlidir. Büyük dosyaları işlerken, verileri parçalar halinde okumak veya akış tabanlı işleme yöntemleri kullanmak performansı artırabilir. Ayrıca, hata yönetimi de önemlidir. Dosya okuma veya veri işleme sırasında ortaya çıkabilecek hataları yakalamak ve uygun şekilde yönetmek uygulamanızın kararlılığını artırır.
Uzman İpucu: Büyük JSON dosyalarını işlerken ijson kütüphanesini kullanmayı deneyin. Akış tabanlı işleme sayesinde bellek kullanımını minimize eder.
Öğrenme Yol Haritası
Yeni Başlayan: json ve yaml kütüphanelerinin temel fonksiyonlarını öğrenin (loads, dumps, safe_load, dump). Basit JSON ve YAML dosyalarını okuma ve yazma örnekleri üzerinde çalışın.
Orta Seviye: Karmaşık JSON ve YAML yapılarını işlemeyi öğrenin. Gerçek dünya örneklerinde bu kütüphaneleri kullanarak uygulamalar geliştirin. Hata yönetimi ve performans optimizasyonu tekniklerini inceleyin.
İleri Seviye: Büyük veri setleriyle çalışmak için akış tabanlı işleme ve verimli algoritmalar öğrenin. Özel veri dönüştürme işlemleri için özelleştirilmiş fonksiyonlar yazın. ijson gibi gelişmiş kütüphaneleri araştırın.
Sonuç
Bu makalede, Python'da JSON ve YAML veri formatlarını nasıl kullanacağınızı detaylı olarak inceledik. Temelden ileri seviyeye kadar birçok konuyu kapsayarak, hem yeni başlayanların hem de deneyimli geliştiricilerin faydalanabileceği bilgiler sunduk. JSON ve YAML'in farklı güçlü ve zayıf yönlerini karşılaştırarak, projeniz için en uygun formatı seçmenize yardımcı olmayı amaçladık. Daha fazla bilgi için https://fatihsoysal.com sitesini ziyaret edebilirsiniz.
Sıkça Sorulan Sorular
1. JSON ve YAML arasında hangi format daha hızlıdır? Genel olarak JSON, YAML'den daha hızlıdır çünkü daha basit bir yapıya sahiptir. Ancak, büyük veri setleri için bu fark önemsiz olabilir.
2. Python'da YAML'i kullanmak için hangi kütüphane gereklidir? PyYAML kütüphanesi.
3. yaml.load() ve yaml.safe_load() arasındaki fark nedir? yaml.safe_load() daha güvenlidir ve güvenilir olmayan kaynaklardan gelen veriler için önerilir. yaml.load() ise daha esnek ancak güvenlik riski taşır.
4. Büyük JSON dosyalarını verimli bir şekilde nasıl işlerim? Akış tabanlı işleme (örneğin, ijson kütüphanesi) kullanarak büyük JSON dosyalarını parçalara bölerek işleyebilirsiniz.
5. JSON ve YAML dosyalarında hangi karakter kodlaması kullanılmalıdır? UTF-8, en yaygın ve önerilen karakter kodlamasıdır.
Yazar: Fatih Soysal
