如何为python程序提供两个可选的命令行整数参数?

时间:2015-12-14 22:01:22

标签: python-3.x argparse optional-arguments

我正在用一些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 个答案:

答案 0 :(得分: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],然后您可以在lengthwidth之间进行拆分。