Portál AbcLinuxu, 16. května 2025 01:06
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
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.