argparse limitations

Oscar Benjamin oscar.benjamin at bristol.ac.uk
Fri Jul 27 10:43:59 EDT 2012


On 27 July 2012 15:26, Benoist Laurent <benoist at ibpc.fr> wrote:

> Hi,
>
> I'm impletting a tool in Python.
> I'd like this tool to behave like a standard unix tool, as grep for
> exemple.
> I chose to use the argparse module to parse the command line and I think
> I'm getting into several limitations of this module.
>
> > First Question.
> How can I configure the the ArgumentParser to allow the user to give
> either an input file or to pipe the output from another program?
>
> $ mytool.py file.txt

$ cat file.txt | mytool.py
>

A better way to do that last line is:
$ mytool.py < file.txt

To answer the question, just make the first argument optional defaulting to
None. Then you can do:
if file1 is None:
    file1 = sys.stdin


>
>
> > Second Question.
> How can I get the nargs options working with subparser?
> Cause basically if I've got a positionnal argument with nargs > 1, then
> the subparsers are recognized as values for the positionnal argument.
>
> $ mytool.py file1.txt file2.txt foo
>
> Here foo is a command I'd like to pass to mytool but argparse considers
> it's another input file (as are file1.txt and file2.txt).
>

I haven't used subparsers in argparse but I imagine that you would call it
like:
$ mytool.py foo file1.txt file2.txt


Cheers,
Oscar.


>
> Any help would be appreciated.
> Ben.
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20120727/a5ea7568/attachment.html>


More information about the Python-list mailing list