Разбор многосимвольных команд в Python getopt

Я использовал Python Getopt для синтаксического анализа, как короткий, так и длинный, и он работал отлично. Теперь мне нужно добавить несколько коротких переменных в функцию getopt, и это выглядело бы лучше, если бы мне нужно было использовать несколько символов как getopt:short. Есть ли способ сделать что-то подобное.

getopt.getopt(argv,"hf:c:d:pv:pz:","")

Здесь мне нужно получить доступ к pv и pz в качестве отдельных аргументов командной строки вместо того, чтобы getopt читал его как "p без аргументов", "v с одним аргументом". Я пробовал 'pv:' [pv:] внутри кавычек, но он распознавал pv, но не читает аргументы.

Кроме того,(на другой ноте) возможно иметь более одного входа для одних и тех же аргументов. Прошу прощения, если это очень простой ответ.

0 ответов

Основываясь на моем понимании документации и исследований, которые я провел, когда мне нужно было то же, что и вам, у меня нет возможности сделать это. shortopts с префиксом "-" работать только с одним символом, для более чем одного символа вы должны использовать longopts, использующие префикс "-".

Пример на python3:

import sys, getopt

try:
    opts, args = getopt.getopt(sys.argv[1:], 'c:d:', ['hf','pv','pz'])
except getopt.GetoptError as e:
    print(str(e))

for o, a in opts:
    print(o, ':', a)

К сожалению, думаю нет возможности поставить longopts с обязательным аргументом, но это можно решить с помощью ручной проверки.

Для получения дополнительной информации я рекомендую обратиться к документации: https://docs.python.org/3.1/library/getopt.html

Другие вопросы по тегам