[optparse] Problem with getting an option value

Peter Otten __peter__ at web.de
Fri Apr 6 07:07:54 EDT 2007


Lucas Malor wrote:

> Hello all. I'm trying to do a little script. Simply I want to make a list
> of all options with them default values. If the option is not specified in
> the command line, the script must try to read it in a config.ini file. If
> it's not present also there, it must set the default value.
> 
> The problem is I maked a simple list for this:
> 
> optname = [
>   [ "delete",         False ],
>   [ "file",   "file" ],
>   [ "dir",    "" ],
> 
> But I must check that the option was specified in command line:
> 
> (options, args) = parser.parse_args()
> for opt in optname :
>   if not options.opt[0] :
>     # read the options from config.ini
> 
> The problem is options is an instance, so options."delete", for example,
> is wrong; I should pass options.delete . How can I do?

Use getattr():

for name, default_value in optname:
    if getattr(options, name) == default_value:
        value = ... # read value from config file
        setattr(options, name, value)
        
Personally, I would always read the config file, use the values found there
to set up the parser and avoid such post-processing.

Peter




More information about the Python-list mailing list