I have a command line script that I run with a lot of arguments. I have now come to a point where I have too many arguments, and I want to have some arguments in dictionary form too.
So in order to simplify things I would like to run the script with a settings file instead. I don’t really know what libraries to use for the parsing of the file. What’s the best practice for doing this? I could of course hammer something out myself, but if there is some library for this, I’m all ears.
A few ‘demands’:
Rather than using pickle I would like it to be a straight forward text file that can easily be read and edited.
I want to be able to add dictionary-like data in it, i.e., some form of nesting should be supported.
A simplified pseudo example file:
truck:
color: blue
brand: ford
city: new york
cabriolet:
color: black
engine:
cylinders: 8
placement: mid
doors: 2
回答 0
您可以有一个常规的Python模块,例如config.py,如下所示:
truck = dict(
color ='blue',
brand ='ford',)
city ='new york'
cabriolet = dict(
color ='black',
engine = dict(
cylinders =8,
placement ='mid',),
doors =2,)
The sample config you provided is actually valid YAML. In fact, YAML meets all of your demands, is implemented in a large number of languages, and is extremely human friendly. I would highly recommend you use it. The PyYAML project provides a nice python module, that implements YAML.
>>>importConfigParser>>>Config=ConfigParser.ConfigParser()>>>Config<ConfigParser.ConfigParser instance at 0x00BA9B20>>>>Config.read("myfile.ini")['c:\\tomorrow.ini']>>>Config.sections()['Others','SectionThree','SectionOne','SectionTwo']>>>Config.options('SectionOne')['Status','Name','Value','Age','Single']>>>Config.get('SectionOne','Status')'Single'
Yaml and Json are the simplest and most commonly used file formats to store settings/config. PyYaml can be used to parse yaml. Json is already part of python from 2.5. Yaml is a superset of Json. Json will solve most uses cases except multi line strings where escaping is required. Yaml takes care of these cases too.