Я думаю, что вы можете использовать два парсера для этого:
import argparse
if __name__ == '__main__':
command_parser = argparse.ArgumentParser()
command_parser.add_argument('-c', '--command', required=True,
help='provide a valid command: start, stop, restart, or status')
if command_parser.parse_known_args()[0].command.lower().startswith('start'):
option_parser = argparse.ArgumentParser()
option_parser.add_argument('-d', '--download', required=True, help='set account download folder')
option_parser.add_argument('-j', '--input', required=True, help='set input json file')
option_parser.parse_known_args()
или вы можете использовать подпарсер, что, вероятно, лучше в вашем случае:
import argparse
if __name__ == '__main__':
command_parser = argparse.ArgumentParser()
subparsers = command_parser.add_subparsers(help='Choose a command')
start_parser = subparsers.add_parser('start', help='"start" help')
start_parser.add_argument('-d', '--download', required=True, help='set account download folder')
start_parser.add_argument('-j', '--input', required=True, help='set input json file')
start_parser.set_defaults(action=lambda: 'start')
stop_parser = subparsers.add_parser('stop', help='"stop" help')
stop_parser.set_defaults(action=lambda: 'stop')
command_parser.parse_args()
в этом случае синтаксис командной строки будет немного другим:
python3 test.py start -d /mydownloadfolder/ -j /myconfig.json
python3 test.py stop