Python : parsing the command line options using optparse
Peter Otten
__peter__ at web.de
Tue Feb 25 11:25:18 EST 2014
Ganesh Pal wrote:
> Iam newbie to Python, Iam trying to use optparse module and write a script
> that will parse the command line options ..I had to use opt parse instead
> of argparse because by host Operating system is still using python 2.6
As you are just starting I recommend that you use argparse instead of
optparse.
> Questions (1)
>
>
> #python python-5.py --path=/ifs/1.txt --operation=XOR --node=11 --log
> -fixcrc
>>> Looks like the dest variable stores it in a dictionary ,
It's an instance of optparse.Values.
> >> print options.path_name ( gives the option entered in the command
> line)
>
>
> /ifs/1.txt
>
>
> I wanted to store all the options in a list like
> [/ifs/1.txt,XOR,11,log_file,fix_crc]
>
> please suggest on the same ?
While you can create such a list with
[getattr(options, name) for name in ["path_name", "operation_type", ...]]
I don't see what the advantage over the default format would be. In fact you
are making it harder to access a specific option that way.
> Question(2)
> Why does this program work only with - option and not - in the above
> code ?
> I think its not working when the type= 'choice' or its somethimf else ?
>
>
> # python-5.py -p=/ifs/1.txt -q=XOR -f=1234 -n=1 -l
If you are asking why short options don't work in conjunction with = -- I
don't know, it is probably a design choice of the optparse author.
argparse accepts short options with like -f=1234
> Question (3)
> If I have really long metavar and the help looks very messy ,is there
> a
> way to make it look elegant.
>
>
> Example :
>
> parser.add_option("-q", "--operation", action="store",
> metavar="XOR|ADD|SET|MODIFY|RENAME|DELETE|KILL|", dest="operation_type",
> default='SET',
>
> type='choice', choices=['XOR', 'ADD', 'SET'
> |'MODIFY'|'RENAME'|'DELETE'|'KILL'],
>
> help = "The corruption operation on the object [default
> :
> %default]",)
You can move the choices into the help. Example using argparse :
parser.add_argument(
"-q", "--operation",
metavar="OP",
default='SET',
choices=['XOR', 'ADD', 'SET'],
help="The corruption operation on the object [choose from %(choices)s;
default: %(default)s]")
This becomes
-q OP, --operation OP
The corruption operation on the object [choose from
XOR, ADD, SET; default: SET]
in the help.
More information about the Python-list
mailing list