[Tutor] sending both a filename and an argument from the command line

Danny Yoo dyoo at hkn.eecs.berkeley.edu
Sun Nov 23 17:04:16 EST 2003



On Sun, 23 Nov 2003, Ben Vinger wrote:

>
> OK, thanks to that advice, it works, but behaves strangely.  (it prints
> the correct output, but also some comments and code to the console)


> parser.add_option("--ip", dest="ip address to test",
>                   help="example: python ip.py capture.txt --ip 66.218.71.109")


Hi Ben,


The 'dest' doesn't stand for "description", but "destination".  We use it
to tell Python what to name to use when it is storing the option.  Try:

    parser.add_option("--ip",
                      dest="ip",
                      help="example: python ip.py capture.txt --ip 66.218.71.109")

Take a look again at:

    http://www.python.org/doc/lib/optparse-store-action.html

if you feel shaky on any of the parameters that add_option() can take.



> options, argv = parser.parse_args(sys.argv)
>
> for line in  fileinput.input(argv):
>
>     if line.find(sys.argv[3]) > 0:
>
>         print line


The point of using optparse is to avoid having to touch sys.argv[3], for
how do we know that the fourth parameter is the ip address parameter?
What if the user does something like this:

    python ip.py --ip 66.218.71.109 capture.txt


Once we parse our arguments using parse_args(), we can say something like:

    options.ip

and that should get us the IP address.  Take advantage of the work that
optparse is doing for you.  *grin*



> The output of
>
> python ip.py capture.txt --ip 66.218.71.109
>
> looks like this (note the unwanted lines from the script):



Ah!  Go back and edit the line:

> for line in  fileinput.input(argv):

'argv' probably still contains the name of the 'ip.py' script at the very
beginning!  So you'll probably want to slice argv[0] out.  Something like:

    for line in fileinput.input(argv[1:]):

should keep it from including itself as part of the input stream.


Hope this helps!




More information about the Tutor mailing list