Hikayeler

Reklam vermek için turkmmo@gmail.com

Python ile YAML Ayrıştırma

Nizam-ı Alem

Malato psichico
Telefon Numarası Onaylanmış Üye Turkmmo Discord Nitro Booster
Yönetici
Dergi Editörü
Turnuva
Admin
Yarışma
Gümüş Üye
VIP Üye
Paylaşım
Ayın Üyesi
Altın Üye
Katılım
15 May 2013
Konular
972
Mesajlar
6,656
Online süresi
2ay 11g
Reaksiyon Skoru
5,350
Altın Konu
314
Başarım Puanı
319
TM Yaşı
12 Yıl 11 Ay 12 Gün
MmoLira
22,230
DevLira
15

Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!

1775833551723.png


YAML nedir?
Bu veri biçimlendirme dili hakkındaki dersimizde zaten öğrendiğimiz gibi, YAML, YAML Ain't Markup Language'in kısaltmasıdır. Girinti ve iç içe geçme gibi çok az sözdizimi kullanarak insan tarafından kolayca okunabilir olacak şekilde tasarlanmıştır.

YAML, doğal olarak üç ana veri türünü destekler: skalerler (dizeler, tamsayılar ve ondalık sayılar gibi), listeler ve ilişkisel diziler (haritalar, sözlükler veya hash'ler olarak da bilinir), ancak özel veri türlerini de destekleyebilir. YAML dosyalarının resmi dosya uzantısı .yaml'dir.

Ağ iletişiminde, ağ cihazlarına depolanan ve iletilen yapılandırma dosyaları için yaygın olarak kullanılır. Ansible ve Terraform gibi ağ araçları tarafından kullanılan standart veri biçimlendirme dilidir.

YAML dosyalarının okunması ve yazılması birçok programlama dili tarafından desteklenir. YAML'yi ayrıştırmak için en popüler dillerden biri Python'dur. Bu eğitimde, PyYAML kütüphanesini kullanacağız.

PyYAML modülü
PyYAML, harici bir Python modülüdür ve kullanmaya başlamadan önce kurulması gerekir. Bunu yapmanın iki yolu vardır:

Yöntem 1: Kaynak Kod Üzerinden
Öncelikle, modülün kaynak kod sayfasına gidin ve depoyu zip dosyası olarak indirin. Ardından, bir terminal veya komut istemi kullanarak, dosyanın indirildiği dizine gidin ve aşağıdaki komutu çalıştırın:

Kod:
$ python setup.py install

Yöntem 2: Pip Aracılığıyla
Python'da YAML kütüphanesini kurmanın daha kolay bir yolu var. Ortamınızda pip paket yöneticisi kuruluysa, PyYAML'ı indirmek ve kurmak için aşağıdaki komutu kullanmanız yeterlidir:

Kod:
$ pip install pyyaml

Python'da YAML Dosyalarıyla Çalışma
Bu bölümde, YAML dosyalarını nasıl okuyup yazacağımızı, yani Python komut dosyalarıyla nasıl yükleyip manipüle edeceğimizi öğreneceğiz.

YAML Dosyalarını Okuma
Öncelikle üzerinde çalışacağımız örneği tanımlayalım. İlk dosyanın içeriği şu şekildedir:

Kod:
# router.yaml file

interfaces:

  - GigabitEthernet0/0
  - GigabitEthernet0/1
  - GigabitEthernet2/1
  - FastEthernet0/0/0
  - FastEthernet0/1/0
  - Serial0/0/0

prefixes:

  - 10.0.0.0/24
  - 1.2.3.0/24
  - 192.168.1.0/24
  - 172.16.12.0/22
  - 172.16.1.0/24
  - 198.54.1.0/28

İkinci dosya aşağıdaki gibidir:

Kod:
# network.yaml file

routers: 11
switches: 23
firewalls: 3
APs: 7
proxies: 1
Şimdi Python betiğiyle ilk örnek dosyayı açıp okuyalım. PyYAML modülündeki `load` yöntemini kullanacağız.

Kod:
import yaml

with open('router.yaml') as file:
    # The FullLoader parameter handles the conversion
    # from YAML scalar values to Python dictionary
    interfaces = yaml.load(file, Loader=yaml.FullLoader)

    print(interfaces)

Çıktı:

Kod:
{'interfaces': [
    'GigabitEthernet0/0',
    'GigabitEthernet0/1',
    'GigabitEthernet2/1',
    'FastEthernet0/0/0',
    'FastEthernet0/1/0',
    'Serial0/0/0',
    ],
'prefixes': [
    '10.0.0.0/24',
    '1.2.3.0/24',
    '192.168.1.0/24',
    '172.16.12.0/22',
    '172.16.1.0/24',
    '198.54.1.0/28',
    ]}

`yaml.load(file, Loader=yaml.FullLoader)` yöntemine geçirdiğimiz `Loader` parametresine dikkat edin; bu parametre, tam YAML dilini yükler ve YAML skalerlerinin Python sözlüklerine ve listelerine dönüştürülmesini sağlar.

ÖNEMLİ: Güvenilmeyen bir kaynaktan alınan herhangi bir veriyle `yaml.load` yöntemini çağırmak güvenli değildir, çünkü herhangi bir Python fonksiyonunu çağırabilir!

Yükleyiciyi bir argüman olarak belirtmek yerine, YAML'nin nasıl yükleneceğini gösteren aşağıdaki yöntemlerden birini doğrudan kullanabiliriz:

Kod:
- yaml.safe_load
- yaml.full_load
- yaml.unsafe_load

YAML Dosyaları Yazma
Önceki bölümde, Python'da YAML dosyalarını nasıl okuyacağımızı öğrendik. Şimdi bir Python sözlüğünü bir YAML dosyasına kaydetmeyi deneyelim. Bunun için, okuma örneğinden elde ettiğimiz sözlüğü kullanacağız.

Kod:
import yaml

dictionary = {'interfaces': [
    'GigabitEthernet0/0',
    'GigabitEthernet0/1',
    'GigabitEthernet2/1',
    'FastEthernet0/0/0',
    'FastEthernet0/1/0',
    'Serial0/0/0',
],
    'prefixes': [
        '10.0.0.0/24',
        '1.2.3.0/24',
        '192.168.1.0/24',
        '172.16.12.0/22',
        '172.16.1.0/24',
        '198.54.1.0/28',
    ]}

with open('interfaces.yaml', 'w') as file:
    interfaces = yaml.dump(dictionary, file)

`yaml.dump` fonksiyonu ilk parametre olarak bir Python sözlüğü alır ve ikinci parametre olarak geçirdiğimiz dosya nesnesinde tanımlandığı gibi bir YAML belgesi üretir.

Yukarıdaki kod çalıştırıldığında, aşağıdaki YAML dosyası elde edilir:

Kod:
interfaces:
- GigabitEthernet0/0
- GigabitEthernet0/1
- GigabitEthernet2/1
- FastEthernet0/0/0
- FastEthernet0/1/0
- Serial0/0/0
prefixes:
- 10.0.0.0/24
- 1.2.3.0/24
- 192.168.1.0/24
- 172.16.12.0/22
- 172.16.1.0/24
- 198.54.1.0/28


 
Eline sağlık :)
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst