I am programming (in Python) an internet site that may have customers. These customers will have many configurations, for example their selection of colour plan, etc. I am pleased to store these as plain text files, and security isn't an problem.
Generate an income presently view it is: there is a dictionary, where all of the secrets are customers and also the values are dictionaries using the users' configurations inside them.
For instance, userdb["bob"]["colour_plan"] might have the worthiness "blue".
What's the easiest method to store it on file? Pickling the dictionary?
Exist possible ways to do what I am attempting to do, anyway?
I do not tackle the question which is better. If you wish to handle text-files, I'd consider ConfigParser -module. Another you can provide a try could be simplejson or yaml. You might think about a real db table.
For example, you might have a table known as userattrs, with three posts:
- Int user_id
- String attribute_title
- String attribute_value
If there's only couple of, you can store them into snacks for convenient retrieval.
I'd make use of the ConfigParser module, which produces some pretty readable and user-editable output for the example:
[bob] colour_plan: blue british: yes [joe] color_plan: that's 'color', silly! british: no
The next code would make the config file above, after which print it:
import sys from ConfigParser import * c = ConfigParser() c.add_section("bob") c.set("bob", "colour_scheme", "blue") c.set("bob", "british", str(True)) c.add_section("joe") c.set("joe", "color_scheme", "that's 'color', silly!") c.set("joe", "british", str(False)) c.write(sys.stdout) # this outputs the configuration to stdout # you could put a file-handle here instead for section in c.sections(): # this is how you read the options back in print section for option in c.options(section): print "\t", option, "=", c.get(section, option) print c.get("bob", "british") # To access the "british" attribute for bob directly
Observe that ConfigParser only supports strings, so you will need to convert when i have above for that Booleans. See effbot for any good run-lower from the fundamentals.
Using cPickle around the dictionary could be my choice. Dictionaries really are a natural fit of these type of data, so given your needs I see pointless not for their services. That, unless of course you are looking at reading through them from non-python programs, by which situation you'd need to use a language neutral text format. As well as here you can get away using the pickle along with an export tool.
Here's the easiest way. Use simple variables and
import the configurations file.
Call the file userprefs.py
# a user prefs file color = 0x010203 font = "times new roman" position = ( 12, 13 ) size = ( 640, 480 )
Inside your application, you'll need to be certain that you could import this file. You've many options.
PYTHONPATHbe set to incorporate your directory using the preferences files.
a. An explicit command-line parameter to title the file (not the very best, but simple)
b. An atmosphere variable to title the file.
sys.pathto incorporate anyone's home directory
import sys import os sys.path.insert(0,os.path.expanduser("~")) import userprefs print userprefs.color