Re: How does one make argparse print usage when no options areprovided on the command line?

Discussion in 'Python' started by Terry Reedy, Dec 6, 2012.

  1. Terry Reedy

    Terry Reedy Guest

    On 12/5/2012 7:48 PM, rh wrote:
    > On Wed, 5 Dec 2012 18:42:37 +0100
    > Bruno Dupuis <> wrote:
    >> On Wed, Dec 05, 2012 at 08:48:30AM -0800, rh wrote:
    >>> I have argparse working with one exception. I wanted the program to
    >>> print out usage when no command line options are given. But I only
    >>> came across other examples where people didn't use argparse but
    >>> instead printed out a separate usage statement. So they used
    >>> argparse for everything but the case where no command line args are
    >>> given.

    >> this is quite raw, but i'd add
    >> import sys
    >> if len(sys.argv) == 1:
    >> sys.argv.append('-h')

    > This works too. I guess I like the print_usage() method better.
    > Being new to python I have noticed that I had copied a bit of code that did
    > if len(sys.argv[1:]) == 0:

    This needlessly creates and tosses a new object.
    > You did this:
    > if len(sys.argv) == 1:

    This does not.

    > The other reply did this:
    > if len(sys.argv) <= 1:

    This allows for the possibility that len(sys.argv) == 0. However, that
    can (according to the doc) only happen when starting the interpreter
    interactively without a script. Since that does not apply to code within
    a .py file, I prefer == 1.

    "argv[0] is the script name (it is operating system dependent whether
    this is a full pathname or not). If the command was executed using the
    -c command line option to the interpreter, argv[0] is set to the string
    '-c'. If no script name was passed to the Python interpreter, argv[0] is
    the empty string."

    Terry Jan Reedy
    Terry Reedy, Dec 6, 2012
    1. Advertisements

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.

Share This Page