Как дать программе на Python два необязательных целочисленных аргумента командной строки?
Я помогаю другу с некоторым кодом Python. Я делаю меню, и я хотел бы сделать размеры настраиваемыми. Я играл с argparse, и мне не повезло. Моя идея состоит в том, чтобы иметь menu.py
по умолчанию 80*24, и есть menu.py 112 84
установить на 112*84. У меня есть мой текущий код здесь:
import argparse
args = argparse.ArgumentParser(description='The menu')
width = length = 0
args.add_argument('--width', const=80, default=80, type=int,
help='The width of the menu.', nargs='?', required=False)
args.add_argument('--length', const=24, default-24, type=int,
help='The length of the menu.', nargs='?', required=False)
inpu = args.parse_args()
width = inpu.width
length = inpu.length
print(width)
print(length)
Как я могу сделать это с argparse
?
1 ответ
Решение
С (немного почистил):
args.add_argument('-w','--width', const=84, default=80, type=int,
help='The width of the menu.', nargs='?')
args.add_argument('-l','--length', const=28, default=24, type=int,
help='The length of the menu.', nargs='?')
Я жду
menu.py => namespace(length=24, width=80)
menu.py -w -l -w => namespace(length=28, width=84)
menu.py -w 23 -l 32 => namespace(length=32, width=23)
Если я изменю аргументы на
args.add_argument('width', default=80, type=int,
help='The width of the menu.', nargs='?')
args.add_argument('length', default=24, type=int,
help='The length of the menu.', nargs='?')
Я бы ожидал
menu.py => namespace(length=24, width=80)
menu.py 32 => namespace(length=24, width=32)
menu.py 32 33 => namespace(length=33, width=32)
Вы также можете использовать один аргумент с nargs='*'
и получить список целых чисел, namespace=[32, 34]
что вы могли бы тогда разделить length
а также width
,