writing command-line options into file

Brian Blais bblais at bryant.edu
Mon Mar 14 08:58:25 EDT 2011


On Mar 14, 2011, at 8:13 AM, hiral wrote:

> For following example, how to write command-line option OR metavar
> into file...
> 
> parser.add_option("-opt1", metavar="MY_OPTION1", default=123)
> parser.add_option("-opt2", metavar="YOUR_OPTION2" ,default= "abc")
> parser.add_option('-opt3", metavar="FLAG", default=True)
> 
> do we have any facility to write command-line option OR 'metavar' into
> file as follow...
> 
> output_file:
> MY_OPTION1 123
> YOUR_OPTION2 abc
> FLAG True
> 
> OR
> output_file:
> opt1 123
> opt2 abc
> opt3 True
> 

Perhaps something like this would work.  This loads and saves just the default values.  A little more digging could make it more robust, and inclusive.  The output file (test.yaml) looks like:

opt1: 123
opt2: abc
opt3: true



from __future__ import with_statement
from optparse import OptionParser
import yaml

class MyOptionParser(OptionParser):

    def save(self,fname):
        data=self.defaults
        with open(fname,'w') as fid:
            yaml.dump(data,fid,default_flow_style=False)        
        
    def load(self,fname):
        data=yaml.load(open(fname))
        for option in data:
            self.add_option("--"+option,default=data[option])



parser = MyOptionParser()

parser.add_option("--opt1", metavar="MY_OPTION1", default=123)
parser.add_option("--opt2", metavar="YOUR_OPTION2" ,default= "abc")
parser.add_option("--opt3", metavar="FLAG", default=True)


parser.save('test.yaml')


newparser=MyOptionParser()
newparser.load('test.yaml')


							bb

-- 
Brian Blais
bblais at bryant.edu
http://web.bryant.edu/~bblais
http://bblais.blogspot.com/






More information about the Python-list mailing list