Ahoj, bohužel si tvůj příklad nemohu zrovna vyzkoušet, ale myslím, že by měl fungovat. Špatně se v něm pracuje s unicode/str a převodem mezi nimi (proč voláš encode na str?), ale protože str() slovníku vrací ASCII řetězec, ať je v něm cokoliv, protentokrát se to neprojeví. Nevím, co myslíš tím "ukládá se v unicodu". Kódování řetězců ve slovníku se nemění, možná jsi očekával něco jiného.
Každopádně, používat na jedné straně eval (a ještě k tomu poměrně exotický modul, byť ze standardní knihovny) a na druhé metodu str, která vůbec není určena k tomu, aby se pomocí jejího výstupu dal zrekonstruovat vstup, je špatný a často i nebezpečný postup. Použij prosím pickle (cPickle), nebo třeba json (ten má výhodu v čitelnosti a ve snadné přenositelnosti mezi programy i v jiných programovacích jazycích). Pokud chceš mít pouze slovník uložený v souboru, můžeš použít i různé specializované knihovny - např. mxBeeBase od Egenixu pro práci se slovníkem (konkrétně b+tree) přímo na disku. Nebo sqlite, to už jsme ale někde o dost jinde. Pokud tvoříš nástroj na překlad textů, podívej se na gettext. Sám bych ale použil nejdřív ten json nebo pickle. PS. open("db2.db") by ti nemělo otevřít soubor pro zápis. PM 2009/9/15 Luboš Melichar <lubos.melic...@gmail.com>: > Zdravim, > jsem začátečník a tak dopředu prosím o trpělivost.. Začátečníkem byl každý. To akorát s chronickými začátečníky je to trochu horší :-) Navíc někdo třeba nemá na dosah komunitu jiných programátorů, kterých by se mohl zeptat. Na oficiálním Python mailing-listu také chodí opravdu všechny možné dotazy. > > Zkouším toto, v souboru mít uložený slovník, případně pole slovníků.. > > {'cz': 'hezký', 'en': 'nice', 'de': 'schön'} > > vyčíst ze souboru, převést na slovník, pracovat s ním, uložit > > #VYCTENI ZE SOUBORU > f = open("db.db") > text = unicode(f.read(),('cp1250')) > f.close() > > #PRACE S DB > db = ast.literal_eval(text) #prevod stringu na seznam slovniku > db['maďarština'] = 'keřmideretvář' > > #ZAPIS DO SOUBORU > text2 = str(db) > f = open("db2.db") > f.write(text2.encode('cp1250')) #ulozeni > f.close() > > bohuzel s cestinou mam neprekonatelny problem, ve vystupnim souboru se > mi to uklada v unicodu. > kodovani v obou souborech mam samozrejme cp1250. > > diky za popostrceni _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python