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=" | <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}
vsgit 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": # ...