Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Python (http://www.velocityreviews.com/forums/f43-python.html)
-   -   write Python dict (mb with unicode) to a file (http://www.velocityreviews.com/forums/t620182-write-python-dict-mb-with-unicode-to-a-file.html)

dmitrey 06-14-2008 09:13 AM

write Python dict (mb with unicode) to a file
 
hi all,
what's the best way to write Python dictionary to a file?

(and then read)

There could be unicode field names and values encountered.
Thank you in advance, D.

TheSaint 06-14-2008 09:58 AM

Re: write Python dict (mb with unicode) to a file
 
On 17:13, sabato 14 giugno 2008 dmitrey wrote:

> hi all,
> what's the best way to write Python dictionary to a file?
>

Pickle or ConfigParser.
You may gather more details at http://docs.python.org/lib/persistence.html

--
Mailsweeper Home : http://it.geocities.com/call_me_not_now/index.html

Matt Nordhoff 06-14-2008 09:59 AM

Re: write Python dict (mb with unicode) to a file
 
dmitrey wrote:
> hi all,
> what's the best way to write Python dictionary to a file?
>
> (and then read)
>
> There could be unicode field names and values encountered.
> Thank you in advance, D.


pickle/cPickle, perhaps, if you're willing to trust the file (since it's
basically eval()ed)? Or JSON (use simplejson or the enhanced version of
cjson), though I doubt it would be super-fast.
--

John Machin 06-14-2008 10:23 AM

Re: write Python dict (mb with unicode) to a file
 
On Jun 14, 7:13 pm, dmitrey <dmitrey.kros...@scipy.org> wrote:
> hi all,
> what's the best way to write Python dictionary to a file?
>
> (and then read)
>
> There could be unicode field names and values encountered.


I'm presuming that "field names" means "dictionary keys". If not
unicode, are the remainder of the keys and values: strings encoded in
ASCII? strings encoded otherwise? neither str nor unicode?


> Thank you in advance, D.


"Best" depends on how you measure it.

cPickle is one alternative (ensure you use protocol=-1). Speed should
be OK, but format not documented AFAIK other than in the source code,
so not readable outside the Python universe. Also it won't matter what
types of data you have.

A portable alternative (and simple enough if all your data are str/
unicode) would be to encode all your strings as UTF-8, and then write
the key/value pairs out to a csv file:
# untested pseudocode for basestring-only case:
for k, v in mydict.iteritems():
csv_writer.writerow((k.encode('utf8'), v.encode('utf8')))
# if you have str instances encoded other than in ASCII or your
system's default encoding, you'll have to work a bit harder ...

Cheers,
John


All times are GMT. The time now is 01:28 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.