Я пишу программу на python, в которой мне нужно прочитать различные необязательные аргументы командной строки и один ОБЯЗАТЕЛЬНЫЙ аргумент (строку), который в идеале должен быть последним аргументом в командной строке.При использовании getopt
я могу читать все, кроме этой строки, если только я не настроил ее, также требующий использования флага (скажем, -s
) перед ним, например:
Usage: myProgram.py [options] -s "some string"
Options available:
-x # Turn on option X
-y # Turn on option Y
-a "used-defined parameter 1"
-b "used-defined parameter 2"
-c "used-defined parameter 3"
-d "used-defined parameter 4"
-s "used-defined string" (REQUIRED)
где код для обработки аргументов будет выглядеть следующим образом:
(opts, args) = getopt.getopt(argv[1:], 'xya:b:c:d:s:')
Это позволит проанализировать аргументы в парах ключ-значение допустимых параметров командной строки.
Вместо этого I 'Хотелось бы разрешить пользователю вводить его так:
Usage: myProgram.py [options] "some string"
без идентификатора -s
.Как написано выше, если -s
явно не включен, код getopt
не будет захватывать эту последнюю строку.Я не могу просто предположить mystring = sys.argv[-1]
, потому что это может быть параметром для одного из других необязательных аргументов.Как мне изменить строку getopt (или какой дополнительный шаг я должен добавить), чтобы перехватить эту последнюю строку, когда нет ключа для ее идентификации, не путая ее с другим существующим ключом?