Display help message with Python argparse when script is called without any arguments
argparse, python
Solution
This answer comes from Steven Bethard on Google groups. I'm reposting it here to make it easier for people without a Google account to access.
You can override the default behavior of the `error` method:
import argparse
import sys
class MyParser(argparse.ArgumentParser):
def error(self, message):
sys.stderr.write('error: %s\n' % message)
self.print_help()
sys.exit(2)
parser = MyParser()
parser.add_argument('foo', nargs='+')
args = parser.parse_args()
Note that the above solution will print the help message whenever the `error` method is triggered. For example, `test.py --blah` will print the help message too if `--blah` isn't a valid option.
If you want to print the help message only if no arguments are supplied on the command line, then perhaps this is still the easiest way:
import argparse
import sys
parser=argparse.ArgumentParser()
parser.add_argument('foo', nargs='+')
if len(sys.argv)==1:
parser.print_help(sys.stderr)
sys.exit(1)
args=parser.parse_args()
Note that `parser.print_help()` prints to stdout by default. As init_js suggests, use `parser.print_help(sys.stderr)` to print to stderr.
Problem
Assume I have a program that uses `argparse` to process command line arguments/options. The following will print the 'help' message: ``` ./myprogram -h ``` or: ``` ./myprogram --help ``` But, if I run the script without any arguments whatsoever, it doesn't do anything. What I want it to do is to display the usage message when it is called with no arguments. How is that done?