我正在尝试通过使用argparse来实现参数解析。我需要的是同时具有“获取”和“设置”命令的一个选项。在Python中有可能吗?
这就是我需要的-例如:
$ python prog.py -width
Width is 15 cm.
$ python prog.py -width=20
Width is set to 20 cm.
我尝试过。但是我找不到实现它的方法。我必须为选项使用2个不同的名称。一个是“ getwidth”,另一个是“ width”。这是我的代码:
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument("-width", help="Set width")
parser.add_argument("-getwidth", action='store_true', help="Get width")
args = parser.parse_args()
if args.width:
print("Set width to %s cm" % args.width)
if args.getwidth:
print("Width is %s cm" % width_value)
这是我的代码的结果:
$ python ts.py -getwidth
Width is 21.0 cm
$ python ts.py -width=25
Set width to 25 cm
答案 0 :(得分:4)
您可以使用nargs='?'
进行此操作:
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument(
"-width",
help="Set width",
nargs='?',
const='get',
)
args = parser.parse_args()
if args.width == 'get':
print("Width is %s cm" % 1)
elif args.width is not None:
print("Set width to %s cm" % args.width)
答案 1 :(得分:0)
您可以这样做,以便将arg值0转换为默认值。像这样...
import argparse
width_value = 5
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument("-width", help="Set width (0 = use default)")
args = parser.parse_args()
action = ""
if args.width != "0":
width_value = int(args.width)
action = "set to "
print("Width is %s%s cm" % (action, width_value))
提供输出...
$ python pyargs.py -width=11
Width is set to 11 cm
$ python pyargs.py -width=0
Width is 5 cm