How can I print a Python file's docstring when executing it?
Here is an alternative that does not hardcode the script's filename, but instead uses sys.argv[0] to print it. Using %(scriptName)s instead of %s improves readability of the code.
#!/usr/bin/env python"""Usage: %(scriptName)sThis describes the script."""import sysif len(sys.argv) < 2: print __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]} sys.exit(0)
Argument parsing should always be done with argparse
.
You can display the __doc__
string by passing it to the description
parameter of Argparse:
#!/usr/bin/env python"""This describes the script."""if __name__ == '__main__': from argparse import ArgumentParser parser = ArgumentParser(description=__doc__) # Add your arguments here parser.add_argument("-f", "--file", dest="myFilenameVariable", required=True, help="write report to FILE", metavar="FILE") args = parser.parse_args() print(args.myFilenameVariable)
If you call this mysuperscript.py and execute it you get:
$ ./mysuperscript.py --helpusage: mysuperscript.py [-h] -f FILEThis describes the script.optional arguments: -h, --help show this help message and exit -f FILE, --file FILE write report to FILE