2015-12-14 3 views
0

Я помогаю другу с кодом Python. Я создаю меню, и я хотел бы сделать размеры настраиваемыми. Я играл с argparse, и мне не повезло. Моя идея состоит в том, чтобы установить menu.py по умолчанию на 80 * 24 и установить menu.py 112 84 на 112 * 84. У меня есть мой текущий код здесь:Как дать программе python два необязательных аргумента целочисленной командной строки?

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?

+0

_ «Отступ кода в StackOverflow не работал» _ - для справок в будущем, здесь ссылка на уценку StackOverflow: http://stackoverflow.com/editing-help#code –

+1

@ SimonMᶜKenzie Предварительный просмотр не показывал форматирование способа, которым я подумал, что нужно. И отступ не форматировался в предварительном просмотре. – JackMacWindows

ответ

2

С (очищено немного):

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.