我的当前代码如下:
parser = argparse.ArgumentParser()
parser.add_argument('origin_x', help='X origin', type=float)
parser.add_argument('origin_y', help='Y origin', type=float)
parser.add_argument('origin_z', help='Z origin', type=float)
parser.add_argument('file_name', help='File to use')
我当然可以这样打电话:
python my_prog.py 0 0 0 foo.txt
但是,我也想这样做:
python my_prog.py foo.txt
但不是这样:
python my_prog.py 0 foo.txt
有什么办法可以使用现有的API? This answer展示了如何手动执行类似操作,但是有自动方法吗?
答案 0 :(得分:1)
后处理可能是最好的选择:
parser.add_argument('origin', nargs="*", default=[0., 0., 0.], type=float)
parser.add_argument('file_name', help='File to use')
args = parser.parse_args()
if not len(args.origin) == 3:
parser.error("you done wrong..")