У меня есть script, где я запрашиваю у пользователя список предопределенных действий для выполнения. Я также хочу, чтобы возможность принимать определенный список действий, когда пользователь ничего не определяет. однако, похоже, что попытка сделать это вместе невозможна.
когда пользователь не дает никаких аргументов, они получают ошибку, которая по умолчанию выбрана неверно
acts = ['clear','copy','dump','lock']
p = argparse.ArgumentParser()
p.add_argument('action', nargs='*', action='append', choices=acts, default=[['dump', 'clear']])
args = p.parse_args([])
>>> usage: [-h] [{clear,copy,dump,lock} [{clear,copy,dump,lock} ...]]
: error: argument action: invalid choice: [['dump', 'clear']] (choose from 'clear', 'copy', 'dump', 'lock')
и когда они определяют набор действий, результирующее пространство имен имеет пользовательские действия, добавленные по умолчанию, вместо замены по умолчанию
acts = ['clear','copy','dump','lock']
p = argparse.ArgumentParser()
p.add_argument('action', nargs='*', action='append', choices=acts, default=[['dump', 'clear']])
args = p.parse_args(['lock'])
args
>>> Namespace(action=[['dump', 'clear'], ['dump']])