Код: Выделить всё
import argparse
def int_main():
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
args = parser.parse_args()
print(args.accumulate(args.integers))
return 1
if __name__ == '__main__':
int_main()
Код: Выделить всё
python prog.py a b c
Код: Выделить всё
usage: prog.py [-h] [--sum] N [N ...]
prog.py: error: argument N: invalid int value: 'a'
Как это сделать?
Я пробовал:
Код: Выделить всё
import argparse
def int_main():
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
try:
args = parser.parse_args()
# print(args.accumulate(args.integers))
except:
return False
return True
if __name__ == '__main__':
res = int_main()
print(res)
Обновление
Есть кажется ошибка:
Код: Выделить всё
import argparse
parser = argparse.ArgumentParser(exit_on_error=False)
try:
parser.parse_args('invalid arguments'.split())
except argparse.ArgumentError:
print('ArgumentError caught.')
update2
Код: Выделить всё
import argparse
def copy_(name1, name2):
return True
def int_main():
parser = argparse.ArgumentParser(prog='blabla',
exit_on_error=False,
argument_default=argparse.SUPPRESS,
add_help=False)
subparsers = parser.add_subparsers(dest="subparser_name", help="")
one_parser = subparsers.add_parser("copy_", help="")
one_parser.add_argument(
dest = "name1",
type = str,
metavar = "NAME1",
)
one_parser.add_argument(
dest = "name2",
type = str,
metavar = "NAME2",
)
one_parser.set_defaults(func=copy_)
try:
args = parser.parse_args()
print(args.func(args.name1, args.name2))
except argparse.ArgumentError:
return False
return True
if __name__ == '__main__':
int_main()
Код: Выделить всё
usage: blabla copy_ [-h] NAME1 NAME2
blabla copy_: error: the following arguments are required: NAME2
Подробнее здесь: https://stackoverflow.com/questions/790 ... en-users-g