Як доповнення до відповіді @VinaySajip. Є додаткові nargs
варті згадки .
parser.add_argument('dir', nargs=1, default=os.getcwd())
N (ціле число). N аргументів з командного рядка буде зібрано в список
parser.add_argument('dir', nargs='*', default=os.getcwd())
'*'. Усі присутні аргументи командного рядка збираються у список. Зауважте, що, як правило, не має великого сенсу мати більше одного позиційного аргументу nargs='*'
, але nargs='*'
можливі кілька необов'язкових аргументів .
parser.add_argument('dir', nargs='+', default=os.getcwd())
'+'. Як і "*", всі присутні аргументи командного рядка збираються у список. Крім того, повідомлення про помилку буде створено, якщо не було принаймні одного аргументу командного рядка.
parser.add_argument('dir', nargs=argparse.REMAINDER, default=os.getcwd())
argparse.REMAINDER
. Всі решта аргументів командного рядка збираються у список. Це зазвичай корисно для утиліт командного рядка, які відправляються на інші утиліти командного рядка
Якщо nargs
аргумент ключового слова не наводиться, кількість вживаних аргументів визначається дією. Як правило, це означає, що буде використано один аргумент командного рядка та буде створено один елемент (а не список).
Редагувати (скопійовано з коментаря @Acumenus) nargs='?'
Документи говорять: "?". Якщо можливо, один аргумент буде використаний у командному рядку та виведений у вигляді одного елемента. Якщо аргументу командного рядка немає, буде створено значення за замовчуванням.
?
і*
означають те саме, що вони означають у регулярних виразах (тобто?
вимагає 0 або 1 і*
вимагає 0 або більше)? Якщо так, чи+
працює також?