ArgParse - Sub-Parsers gruppieren
Verfasst: Montag 28. Februar 2022, 22:12
Hallo,
ich bin gerade dabei ein kleines Tool für mich zu konzeptualisieren und stecke etwas fest bei den Überlegungen meiner Command Line Commands:
Aktuell habe ich es so mir vorgestellt:
Es soll also folgende Commands möglich sein:
Ist die oben beschriebene Überlegung so korrekt zu den hier stehenden Commands?
Also insbesondere, dass --load, --contracts, --plot Argumente darstellen und die anderen, wie oben beschrieben Sub Arguments und das alles dann in Gruppen gesammelt werden?
Mein Versuch sieht aktuell so aus:
Ich frage mich dann aber auch, wie Sub Arguments gruppiert werden?
ich bin gerade dabei ein kleines Tool für mich zu konzeptualisieren und stecke etwas fest bei den Überlegungen meiner Command Line Commands:
Aktuell habe ich es so mir vorgestellt:
Code: Alles auswählen
- Group 1: Load Data Sheet
- Argument: --load (DIR)
- Group 2: Contracts Manager:
- Arguments: --contracts
- Sub-Arguments
- --list
- --insert (NAME, CATEGORY [bereits vorgeschriebene Werte], DATE, AMOUNT --> all required)
- --delete (ID)
- --update (ID, NAME, CATEGORY [Optional values], DATE, AMOUNT --> all required)
- --check
- Group 3: Plots:
- Argument --plot
- Sub-Arguments
- --total
- --category (CATEGORY=optional) (TIMESPAN=optional)
Code: Alles auswählen
myscript.py --load [DIR] # Load Sheets
myscript.py --contracts --list # List all contracts
myscript.py --contracts --insert (NAME) (CATEGORY) (DATE) (AMOUNT) # Insert contract entry
myscript.py --contracts --delete (ID) # delete contract entry
myscript.py --contracts --update (ID) (NAME) (CATEGORY) (DATE) (AMOUNT) # update contract entry
myscript.py --contracts --check # show upcoming contracts
myscript.py --plot --total # show financial situation
myscript.py ---plot --category (CATEGORY) (TIMESPAN)
Also insbesondere, dass --load, --contracts, --plot Argumente darstellen und die anderen, wie oben beschrieben Sub Arguments und das alles dann in Gruppen gesammelt werden?
Mein Versuch sieht aktuell so aus:
Code: Alles auswählen
import logging
import pprint
from typing import Optional
from typing import Sequence
import argparse
logger = logging.getLogger('__main__')
def main(argv: Optional[Sequence[str]] = None) -> int:
parser = argparse.ArgumentParser(
prog='BudgetManager',
add_help=True,
description='An program to evaluate Finanzguru sheet ')
group_load = parser.add_argument_group('Load')
group_load.add_argument(
'-l', '--load',
nargs='?',
type=argparse.FileType('r'),
metavar='Path',
help='Refresh database with new sheet')
group_contracts = parser.add_argument_group('Contracts Management')
group_contracts.add_argument(
'-c', '--contracts',
help='Manage your contracts')
group_contracts = parser.add_argument_group('Plot')
group_contracts.add_argument(
'-p', '--plot',
help='Plot your financial situation')
args = parser.parse_args(argv)
pprint.pprint(vars(args))
return 0
if __name__ == '__main__':
exit(main())
Ich frage mich dann aber auch, wie Sub Arguments gruppiert werden?