Je mi to jasne.
- ak chce OP ukladat zlozite datove struktury:
- ak to nepotrebuje mat v ludsky-citatelnej forme moze pouzit pickle, shelve, ....
- ak to chce mat v ludsky-citatelnej forme moze pouzit YAML, JSON
- ak chce OP ukladat globalne nastavenia programu, tak je idealny ConfigParser a INI-subor v ludsky-citatelnej forme
Mne sa podla dotazu zda, ze OP potrebuje globalne nastavenia programu.
Podle mě má INI význam tenkrát, pokud chceme mít data nejenom v lidsky čitelné podobě, ale chceme umožnit i editaci. YAML je exot (nic proti), JSON je super v tom, že je přenositelný i mimo Python a dá se validovat (JSON Schema), dá se v případě potřeby číst i editovat ručně, ale není to až tak moc komfortní, spíše nouzovka. Shelve jsem nikdy nepoužil a nemám k tomu moc motivaci, pickle je pohodlné, pokud se používá jenom z Pythonu. Problém nastává tenkrát, když se změní třeba název třídy, která tam byla původně uložená. Pak se ušetřená práce vrátí zpět jako bumerang.
Obecně - pokud je to jenom trochu možné, použiju JSON. Od 2.6 je v Pythonu podpora standardně, nejsem vázaný na Python (už se mi stalo, že jsem potřeboval zpracovávat mezivýstupy v jiném jazyce - konkrétně ve Scale a stejně jsem je konvertoval z pickle do JSONu). Serializaci složitějších objektů (na což se pickle nebo ZODB samozřejmě docela hodí) se snažím vyhýbat, podle mě to ve většině případů není moc dobrý nápad.