Portál AbcLinuxu, 25. října 2025 09:00
modul = dict()
modul["prvni"] = dict()
modul["prvni"]["soubory"] = dict()
modul["prvni"]["metody"] = dict()
modul["prvni"]["testy"] = dict()
modul["prvni"]["cmd"] = dict()
...
modul["prvni"]["cmd"]["filter"] = dict()
modul["prvni"]["cmd"]["filter"]["cesta"] = ['/aaa/bbb','/ccc/ddd']
modul["prvni"]["cmd"]["filter"]["typ"] = "sh"
modul["prvni"]["cmd"]["filter"]["bin"] = "/abc/text_filter"
Ve funkci či objektu si pak jednoduše zístám potřebné informace viz:
text_procesor = modul["prvni"]["cmd"]["filter"]["bin"]
Napadá vás jak lépe konfig zapsat?
Vím ,že položeb a zanoření slovníků bude dramaticky přibývat...
Dík
Pokud "aktualizovatelna data" znamena ze si jako slusne vychovany unixovy program umi reloadnout konfigurak kdyz dostane HUP tak na to ma python uzasny vynalez k thread-safe zamene nahrazeni jednoho objektu jinym za behu. Obvykle se mu rika rovnitko :-P
modul = {
'prvni' : {
'soubory' : {},
'metody' : {},
'testy' : {},
'cmd' : {
'filter' : {
'cesta' : [ '/aaa/bbb', '/ccc/ddd', ],
'typ' : 'sh',
'bin' : '/abc/text_filter',
},
},
},
}
collections.defaultdict
[modul_prvni] cmd_filter_cesta = /aaa/bbb,/ccc/ddd cmd_filter_typ = sh cmd_filter_bin = /abc/text_filterK volbám a jejich hodnotám z konfigurace se pak přistupuje takto.
config = configparser.RawConfigParser()
config.read('config')
print(config.get('modul_prvni', 'cmd_filter_cesta').split(','))
Pro získání cest jako objektu pole.
....
modul = {}
modul[("prvni","cmd","filter","bin")] = "/abc/text_filter"
....
jojo, furt se mám co učit..
Dik
modul = {
"prvni": {
"soubory": {…},
"metody": {…},
"testy": {…},
"cmd": {
"filter" = {
"cesta": ['/aaa/bbb','/ccc/ddd'],
"typ": "sh",
"bin": "/abc/text_filter"
}
}
}
}
Kdyby to byl jinej jazyk tak by se dal uvazovat json nebo nedejboze xml, ale zrovna u pythonu si tim moc nepomuzes. Druha vec je jestli je nutny tak hluboke strukturovani. Neni problem napsat pajtni kod tak aby co nejvic hodnot bylo defaultnich.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.