Python argparse: Difference between revisions

From wikinotes
No edit summary
Line 53: Line 53:
(ex. <code>git checkout ${params}</code> vs <code>git fetch ${params}</code>)
(ex. <code>git checkout ${params}</code> vs <code>git fetch ${params}</code>)


<syntaxhighlight lang="bash">
<syntaxhighlight lang="python">
# create parser
# create parser
git_parser = argparse.ArgumentParser()
git_parser = argparse.ArgumentParser()
</syntaxhighlight>


<syntaxhighlight lang="python">
# create subparsers
# create subparsers
subparsers = git_parser.add_subparsers(dest="git_subparser")
subparsers = git_parser.add_subparsers(dest="git_subparser")
Line 62: Line 64:
git_fetch_parser = subparser.add_parser("fetch")
git_fetch_parser = subparser.add_parser("fetch")
git_fetch_parser = subparser.add_parser("show")
git_fetch_parser = subparser.add_parser("show")
</syntaxhighlight>


<syntaxhighlight lang="python">
# add arguments to subparsers
# add arguments to subparsers
git_checkout_parser.add_argument("file_or_commit", help="file/commit to checkout")
git_checkout_parser.add_argument("file_or_commit", help="file/commit to checkout")
</syntaxhighlight>


<syntaxhighlight lang="python">
# identifying subparser, and parsing args
# identifying subparser, and parsing args
args = git_parser.parse_args()
args = git_parser.parse_args()

Revision as of 15:48, 9 April 2022

Argparse is a builting python library for building commandline interfaces.

import argparse

parser = argparse.ArgumentParser(description='Does thing real well')
parser.add_argument('-v', '--verbose',
                    action='store_true', help='enable verbose logging')

args = parser.parse_args()
print(args.verbose)  # True

Arguments

Argument Types

# number of args
(nothing)  # positional
nargs=1    # flag with N args
nargs='+'  # flag with one or more args    (args.arg  = [])
nargs='?'  # flag with one or no args      (args.arg  = None, 'var')  #(set const=val to know when flag issued with no arguments)
nargs='*'  # flag with multiple or no args (args.arg  = None, [], ['a','b',...])

# boolean args
action='store_true'
action='store_false'

Samples:

# foo my/output/file
parser.add_argument('output-file',
                    help='filepath to save spreadsheet to')

# foo -s today
parser.add_argument('-s', '--start-date',
                    nargs=1, help='date to start from')

# foo -v
parser.add_argument('-v', '--verbose',
                    action='store_true', help='verbose logging')

Parsers

SubParsers

Subparsers let you bind a different parser to sub-commands.
(ex. git checkout ${params} vs git fetch ${params})

# create parser
git_parser = argparse.ArgumentParser()
# create subparsers
subparsers = git_parser.add_subparsers(dest="git_subparser")
git_checkout_parser = subparsers.add_parser("checkout")
git_fetch_parser = subparser.add_parser("fetch")
git_fetch_parser = subparser.add_parser("show")
# add arguments to subparsers
git_checkout_parser.add_argument("file_or_commit", help="file/commit to checkout")
# identifying subparser, and parsing args
args = git_parser.parse_args()
if args.git_subparser == "checkout":
    # ...
elif args.git_subparser == "fetch":
    # ...
elif args.git_subparser == "show":
    # ...