GIT=/usr/bin/git # STORE THE RELATIVE PATH
# GIT=$(which git) # USE THIS COMMAND TO SEARCH FOR THE RELATIVE PATH
if [[ ! -e $GIT ]]; then # CHECK IF THE FILE EXISTS
echo "PROGRAM DOES NOT EXIST."
exit 1 # EXIT THE PROGRAM IF IT DOES NOT
fi
# DO SOMETHING ...
exit 0 # EXIT THE PROGRAM IF IT DOES
Я считаю, что optparse
не поддерживает то, что вам нужно (не напрямую - как вы заметили, вы можете сделать это, если готовы выполнить всю дополнительную работу по обратный звонок! -). Вы также можете сделать это проще всего с помощью стороннего расширения argparse , которое поддерживает переменное количество аргументов (а также добавляет несколько других полезных функций).
Этот URL документирует argparse
's add_argument
- передача nargs =' * '
позволяет опции принимать ноль или более аргументов, ' + '
позволяет один или несколько аргументов и т. д.
Моя ошибка: только что нашел этот Пример обратного вызова 6 .
Не лучше ли вам это сделать?
foo.pl --files a.txt,b.txt,c.txt --verbose
Это заняло у меня немного времени, чтобы разобраться, но вы можете использовать действие обратного вызова для своих опций, чтобы это сделать. Посмотрите, как в этом примере я захватываю произвольное количество аргументов для флага «--file».
from optparse import OptionParser,
def cb(option, opt_str, value, parser):
args=[]
for arg in parser.rargs:
if arg[0] != "-":
args.append(arg)
else:
del parser.rargs[:len(args)]
break
if getattr(parser.values, option.dest):
args.extend(getattr(parser.values, option.dest))
setattr(parser.values, option.dest, args)
parser=OptionParser()
parser.add_option("-q", "--quiet",
action="store_false", dest="verbose",
help="be vewwy quiet (I'm hunting wabbits)")
parser.add_option("-f", "--filename",
action="callback", callback=cb, dest="file")
(options, args) = parser.parse_args()
print options.file
print args
Единственным побочным эффектом является то, что вы получаете свои аргументы в виде списка вместо кортежа. Но это можно легко исправить, для моего конкретного случая использования список желателен.