TOML Yapılandırma Dosyası Örneği
TOML spesifikasyonu, büyük/küçük harfe duyarlı anahtar/değer çiftlerinin kullanımını içerir. Anahtarlar sol tarafta, değerler ise sağ tarafta olacak; bu terimler her iki tarafta eşittir işaretiyle ayrılır. Anahtar/değer çiftleri, çoğu programlama dilinde göreceğiniz değişken bildirim sözdizimiyle aynıdır. Ayrıca, programlarınızdaki gelişmiş ayrıştırma mantığı ve uygulaması için anahtar/değer çiftlerini düzenli tutmak için köşeli parantez içinde tabloları ve alt tabloları (bölümler ve alt bölümler) tanımlayabilirsiniz. Değerler dize, tamsayı, kayan nokta, boolean, dizi ve saat ve tarih türlerinde olabilir. TOML, bir tabloyu (bölümü) “tablo” olarak tanımlayabilmeniz için nokta sözdiziminin kullanılmasına izin verir.alt tablo” veya “anahtar” olarak bir anahtar.tanımlayıcı”. TOML dosyası için kullanılan dosya uzantısı .tom. Aşağıda bir TOML dosyasının kısaltılmış bir örneği verilmiştir:
isim = "PC Oyunu"[varsayılan]
profile_name = "Profil"
player_name = "Oyuncu"
profile_created = 1979-05-27T07:32:00-08:00
ses = doğru
[kullanıcı]
[kullanıcı.profil]
isim = "profil1"
oyuncu_adı = "oyuncu1"
sınıf = "savaşçı"
[kullanıcı.ayarlar]
ses = yanlış
[varsayılan_envanter]
savaşçı = [ ["kılıç", "kalkan"], ["plaka zırh", "plaka miğfer"] ]
mage = [["personel", "asa"], ["elbise", "başlık"]]
öğeler = [
"Can iksiri",
"panzehir",
"mana iksiri"
]
Başvuru için, aynı yapılandırma dosyası aşağıdaki JSON'da yazılmıştır:
"isim": "PC Oyunu",
"varsayılan":
"profil_adı": "Profil",
"player_name": "Oyuncu",
"profile_created": "1979-05-27T15:32:00.000Z",
"ses": doğru
,
"kullanıcı":
"profil":
"ad": "profil1",
"player_name": "player1",
"sınıf": "savaşçı"
,
"ayarlar":
"ses": yanlış
,
"varsayılan_envanter":
"savaşçı": [
[
"kılıç",
"kalkan"
],
[
"Plaka zırhı",
"plaka dümeni"
]
],
"büyücü": [
[
"Personel",
"asa"
],
[
"elbise",
"başlık"
]
],
"öğeler": [
"Can iksiri",
"panzehir",
"mana iksiri"
]
JSON ve INI Dosya Formatları Arasındaki Farklar
TOML, JSON ve INI biçimlerine birçok yönden benzerdir, ancak hangi dosya biçimini kullanmak isteyeceğinizi belirleyebilecek birkaç farklılık vardır. TOML dosya formatı, insan tarafından okunabilirliği vurgular ve okunması daha temiz görünür. INI dosyaları iç içe bölümleri ve iç içe anahtar/değer çiftlerini desteklemez. JSON'dan farklı olarak TOML yorumlara izin verir (# sembolü ile). Bir JSON dosyasındaki uzun iç içe geçmiş veriler, yalnızca birkaç satırda TOML'de yazılabilir.
Bununla birlikte, TOML'de uzun iç içe hiyerarşilerdeki yapıyı düzgün bir şekilde tanımlamak kafa karıştırıcı olabilir, JSON'da ise iç içe veriler ayrıntılı görünse bile yapı çok daha açıktır. TOML, büyük yapılandırılmış veri kümeleri için değil, öncelikle yapılandırma dosyaları için tasarlanmıştır; JSON ise herhangi bir yapılandırılmış veri ölçeği için uygundur.
Python TOML Modülü
Python standart kitaplıkları, bu makalenin yazıldığı sırada şu anda TOML verilerinin ayrıştırılması için herhangi bir desteğe sahip değildir. Bu, TOML sürüm 1'den sonra değişebilir.0.0 serbest bırakıldı. Şimdilik, adlı üçüncü taraf Python modülünü kullanmanız gerekecek tom. Bu modülü aşağıdaki komutlardan birini kullanarak Ubuntu'ya kurabilirsiniz:
$ sudo apt yükleme python3-toml$ pip3 kurulum toml
Python TOML Modülünü Kullanarak TOML Dosyasını Ayrıştırma
python3-toml modülünü kullanarak bir TOML dosyasını ayrıştırmak oldukça basittir. "toml" ifadesini kullanabilirsiniz.Tüm dosyayı ayrıştırmak için load” yöntemini kullanabilir veya “toml.Herhangi bir TOML biçimli anahtar/değer çiftini ayrıştırmak için "load" yöntemi. bir "veri" olduğunu varsayarsak.toml” dosyası, yukarıdaki örnekte bahsedilen TOML formatlı dizeleri içerir, aşağıdaki kod TOML verilerini bir python sözlüğü olarak ayrıştırır ve yazdırır:
#!/usr/bin/env python3ithalat toml
yazdır.veri yükle.tom"))
Yukarıdaki kodu çalıştırmak aşağıdaki çıktıyı üretecektir:
'name': 'PC Oyunu', 'varsayılan': 'profil_adı': 'Profil', 'oyuncu_adı': 'Oyuncu','profile_created': tarihsaat.tarihsaat(1979, 5, 27, 7, 32, tzinfo=
'oyuncu_adı': 'oyuncu1', 'sınıf': 'savaşçı', 'ayarlar': 'ses': Yanlış,
'default_envanter': 'savaşçı': [['kılıç', 'kalkan'], ['plaka zırh', 'plakalı miğfer']],
'büyücü': [['personel', 'asa'], ['elbise', 'başlık']], 'eşyalar': ['sağlık iksiri', 'panzehir',
'mana iksiri']
Artık bir python sözlük nesnesine sahip olduğunuza göre, sözlük verilerini işlemek için programınızdaki herhangi bir mantığı uygulayabilirsiniz.
Bir Python Sözlüğünü TOML Biçimli Veri Olarak Dökme
Bir python sözlüğü, “toml” kullanılarak TOML formatlı dizelere dökülebilir.dumps” yöntemi veya nesne “toml” kullanılarak bir dosyaya atılabilir.boşaltma” yöntemi. Aşağıdaki örnek, bir sözlük nesnesini TOML formatlı dizelere dönüştürür:
#!/usr/bin/env python3ithalat toml
veri = tom.veri yükle.tom")
yazdır.dökümler(veri))
Yukarıdaki kodu çalıştırmak aşağıdaki çıktıyı üretecektir:
isim = "PC Oyunu"[varsayılan]
profile_name = "Profil"
player_name = "Oyuncu"
profile_created = 1979-05-27T07:32:00-08:00
ses = doğru
[varsayılan_envanter]
savaşçı = [ [ "kılıç", "kalkan",], [ "plaka zırh", "plaka miğfer",],]
mage = [ [ "personel", "asa",], [ "elbise", "başlık",],]
item = [ "sağlık iksiri", "panzehir", "mana iksiri",]
[kullanıcı.profil]
isim = "profil1"
oyuncu_adı = "oyuncu1"
sınıf = "savaşçı"
[kullanıcı.ayarlar]
ses = yanlış
Bir sözlük nesnesini TOML formatlı bir dizgeye dönüştürmek ve bir dosyada saklamak için “toml” komutunu kullanabilirsiniz.dump(dictionary_object, output_file)” yöntemi.
Sonuç
Daha basit terimlerle ifade edilen bir TOML dosyası, daha kolay ayrıştırma ve daha iyi okunabilirlik sağlayan, daha iyi yapıya ve söz dizimine sahip bir INI yapılandırma dosyasıdır. TOML dosya biçimi genellikle JSON dosya biçimiyle karşılaştırılır, ancak yapılandırma dosyalarındaki kullanımının dışında TOML'nin pek bir faydası yoktur. JSON ise çok daha çok yönlüdür ve herhangi bir veri yapısı türü gerektiren farklı kullanım durumlarında kullanılabilir.