Piton

TOML fájlok olvasása és írása a Python használatával

TOML fájlok olvasása és írása a Python használatával
A TOML, rövidítve a „Tom's Object Minimal Language” rövidítéssel, egy viszonylag új és népszerű fájlformátum, amely a konfigurációs fájlok írásának minimális szemantikájára összpontosít. A fájlformátumot Tom Preston-Werner, a GitHub korábbi vezérigazgatója készítette. A cikk írásakor az 1. verzió első kiadójelöltje volt.0.0 címkézve lett, így a specifikáció többé-kevésbé végleges. Ez a cikk röviden bemutatja a TOML fájlformátumot, és leírja, hogy ez a fájlformátum hogyan használható Python alkalmazásokban és szkriptekben.

Példa a TOML konfigurációs fájlra

A TOML specifikációja a kis- és nagybetűk közötti kulcs-érték párok használatát tartalmazza. A gombok a bal oldalon vannak, míg az értékek a jobb oldalon; ezeket a kifejezéseket mindkét oldalon egyenlőségjel választja el. A kulcs-érték párok megegyeznek a változó deklarációs szintaxissal, amelyet a legtöbb programozási nyelvben látni fog. Szögletes zárójelben definiálhat táblázatokat és altáblázatokat is (szakaszok és alszakaszok), hogy a kulcsérték-párok szervezettek maradjanak a program elemzési logikájának és alkalmazásának javítása érdekében. Az értékek lehetnek karakterlánc, egész szám, lebegő, logikai, tömb, valamint idő és dátum típusúak. A TOML lehetővé teszi a pontszintaxis használatát, így egy táblázatot (szakaszt) táblának definiálhat.subtable ”vagy egy kulcs mint„ key.azonosító ”. A TOML fájlhoz használt fájlkiterjesztés az .toml. Az alábbiakban egy TOML fájl rövidített példája található:

name = "PC játék"
[alapértelmezett]
profile_name = "Profil"
player_name = "Játékos"
profile_created = 1979-05-27T07: 32: 00-08: 00
hang = igaz
[felhasználó]
[felhasználó.profil]
név = "profil1"
player_name = "player1"
class = "harcos"
[felhasználó.beállítások]
hang = hamis
[alapértelmezett készlet]
harcos = [["kard", "pajzs"], ["lemezes páncél", "lemezes sisak"]]
mágus = [["személyzet", "pálca"], ["köntös", "csuklya"]]
tételek = [
"élet ital",
"ellenméreg",
"mana bájital"
]

Hivatkozásképpen ugyanaz a konfigurációs fájl az alábbi JSON-ban van megírva:


"name": "PC játék",
"alapértelmezett":
"profile_name": "Profil",
"player_name": "Játékos",
"profile_created": "1979-05-27T15: 32: 00.000Z ",
"hang": igaz
,
"felhasználó":
"profil":
"név": "profil1",
"player_name": "player1",
"osztály": "harcos"
,
"beállítások":
"hang": hamis

,
"default_inventory":
"harcos": [
[
"kard",
"pajzs"
],
[
"lemezpáncél",
"tányér sisak"
]
],
"mágus": [
[
"személyzet",
"pálca"
],
[
"palást",
"kapucni"
]
],
"elemek": [
"élet ital",
"ellenméreg",
"mana bájital"
]

Különbségek a JSON és az INI fájlformátumok között

A TOML sok szempontból hasonlít a JSON és az INI formátumokra, néhány különbséggel, amely meghatározhatja, hogy melyik fájlformátumot fogja használni. A TOML fájlformátum hangsúlyozza az emberi olvashatóságot, és sokkal tisztábbnak tűnik olvasni. Az INI fájlok nem támogatják a beágyazott szakaszokat és a beágyazott kulcs-érték párokat. A JSON-tól eltérően a TOML engedélyezi a megjegyzéseket (# szimbólummal). A JSON fájl hosszú beágyazott adatai TOML-be írhatók csak néhány sorban.

Mindazonáltal zavaró lehet a struktúra megfelelő azonosítása a TOML hosszú beágyazott hierarchiáiban, míg a JSON-ban a szerkezet sokkal egyértelműbb, bár a beágyazott adatok bőnek tűnhetnek. A TOML elsősorban konfigurációs fájlokhoz készült, és nem nagy strukturált adathalmazokhoz, míg a JSON bármilyen strukturált adatmérethez alkalmas.

A Python TOML modul

A cikk írásakor a Python szabványos könyvtárak jelenleg nem támogatják a TOML-adatok elemzését. Ez a TOML 1. verziója után megváltozhat.0.0 felszabadul. Egyelőre egy harmadik féltől származó Python modult kell használnia toml. Az alábbi parancsok egyikével telepítheti ezt a modult az Ubuntuba:

$ sudo apt telepítse a python3-toml fájlt
$ pip3 install toml

TOML fájl elemzése a Python TOML modul használatával

A TOML fájl elemzése a python3-toml modul segítségével meglehetősen egyszerű. Használhatja a „toml.betöltés ”módszerrel elemezheti a teljes fájlt, vagy használhatja a„ toml.betöltés ”módszer bármely adott TOML-formázott kulcs-érték pár elemzésére. Feltételezve, hogy „adat.toml ”fájl tartalmazza a fenti példában említett TOML formázott karakterláncokat, az alábbi kód elemzi és kinyomtatja a TOML adatokat python szótárként:

#!/ usr / bin / env python3
import toml
nyomtatás (toml.adat betöltés.toml "))

A fenti kód futtatása a következő kimenetet eredményezi:

'name': 'PC-játék', 'default': 'profile_name': 'Profile', 'player_name': 'Player',
'profile_created': dátumidő.dátumidő (1979, 5, 27, 7, 32, tzinfo =object at 0x7f3506b3d850>), 'sound': True, 'user': 'profile': 'name': 'profile1',
'player_name': 'player1', 'class': 'warrior', 'settings': 'sound': False,
'default_inventory': 'harcos': [['kard', 'pajzs'], ['lemezes páncél', 'lemezes sisak']],
„mágus”: [[„személyzet”, „pálca”], [„köntös”, „csuklya”]], „tárgyak”: [„egészségügyi főzet”, „ellenszer”,
'mana bájital']

Most, hogy van egy python szótár objektum, a programban bármilyen logikát megvalósíthat a szótár adatainak kezelésére.

A Python szótár megsemmisítése TOML formázott adatokként

A „toml.” Segítségével egy python szótár beilleszthető a TOML formázott karakterláncokba.dumps ”módszerrel, vagy az objektum a fájlba dobható a„ toml.dump ”módszer. Az alábbi példa átalakítja a szótár objektum nito TOML formázott karakterláncait:

#!/ usr / bin / env python3
import toml
adatok = toml.adat betöltés.toml ")
nyomtatás (toml.kiírások (adatok))

A fenti kód futtatása a következő kimenetet eredményezi:

name = "PC játék"
[alapértelmezett]
profile_name = "Profil"
player_name = "Játékos"
profile_created = 1979-05-27T07: 32: 00-08: 00
hang = igaz

[alapértelmezett készlet]
harcos = [["kard", "pajzs",], ["lemezes páncél", "lemezes sisak",],]
mágus = [["személyzet", "pálca",], ["köntös", "csuklya",],]
item = ["egészségital", "ellenszer", "mana főzet",]

[felhasználó.profil]
név = "profil1"
player_name = "player1"
class = "harcos"
[felhasználó.beállítások]
hang = hamis

Ha egy szótár objektumot TOML formázott karakterláncokká kíván konvertálni és fájlban tárolni, használhatja a „toml.dump (szótár_objektum, output_fájl) ”metódus.

Következtetés

Az egyszerűbb TOML fájl csak egy INI konfigurációs fájl, jobb szerkezettel és szintaxissal, megkönnyítve az elemzést és az olvashatóságot. A TOML fájlformátumot gyakran összehasonlítják a JSON fájlformátummal, de a konfigurációs fájlokban való felhasználásán kívül a TOML nem sok hasznossággal rendelkezik. A JSON viszont sokkal sokoldalúbb, és bármilyen adatstruktúra-típust igénylő különböző felhasználási esetekben használható.

A League of Legends telepítése az Ubuntu 14-re.04
Ha rajongsz a League of Legendsért, akkor ez egy lehetőség arra, hogy teszteld a League of Legends játékot. Ne feledje, hogy a LOL a PlayOnLinux rends...
Telepítse a legújabb OpenRA stratégiai játékot az Ubuntu Linux rendszerre
Az OpenRA egy ingyenes / ingyenes valós idejű stratégiai játékmotor, amely újjáépíti a korai Westwood játékokat, mint például a klasszikus Command & C...
Telepítse a legújabb Dolphin Emulator for Gamecube & Wii szoftvert Linuxra
A Dolphin Emulator segítségével a kiválasztott Gamecube & Wii játékokat játszhatja Linux személyi számítógépeken (PC). Mivel a Dolphin Emulator szaba...