Я использую модуль Python argparse
для анализа аргументов командной строки.Рассмотрим следующий упрощенный пример:
# File test.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-s', action='store')
parser.add_argument('-a', action='append')
args = parser.parse_args()
print(args)
, который может быть успешно вызван как
python test.py -s foo -a bar -a baz
Требуется один аргумент после -s
и после каждого -a
, который может содержать пробелыесли мы используем цитату.Однако если аргумент начинается с дефиса (-
) и не содержит пробелов, код вылетает:
python test.py -s -begins-with-dash -a bar -a baz
ошибка: аргумент -s: ожидается один аргумент
Я понял, что -begins-with-dash
интерпретируется как начало новой опции, что недопустимо, поскольку -s
еще не получил требуемый аргумент.Также довольно ясно, что ни один вариант с именем -begins-with-dash
не был определен, и поэтому он не должен интерпретировать его как параметр в первую очередь.Как я могу заставить argparse
принимать аргументы с одной или несколькими начальными чертами?