gpt4 book ai didi

python - argparse 位置内的可选参数

转载 作者:太空宇宙 更新时间:2023-11-04 03:40:27 25 4
gpt4 key购买 nike

使用 argparse 我希望能够将可选参数与多个位置参数混合,例如,svn 允许:

svn ls first/path -r 1000 second/path

目前,Python 还没有正式支持它(c.f. http://bugs.python.org/issue14191)。我写了这个解决方法,我现在想知道,是否 a) 有更好/更简单/更优雅的方法来做到这一点,以及 b) 如果有人可以在代码中看到某些可能在某些情况下破坏它的东西:

#!/usr/bin/env python3                                                          

import argparse as ap

p = ap.ArgumentParser()
p.add_argument('-v', action='store_true')
p.add_argument('-l', action='store_true')
p.add_argument('files', nargs='*', action='append')
p.add_argument('remainder', nargs=ap.REMAINDER, help=ap.SUPPRESS)

args = p.parse_args()
while args.remainder != []:
args = p.parse_args(args.remainder, args)

print(args)

使用示例:

./test.py a b -v c d 

输出:

Namespace(files=[['a', 'b'], ['c', 'd']], l=False, remainder=[], v=True)

最佳答案

你可以使用 parse_known_args而不是包含 remainder:

import argparse as ap                                                           

p = ap.ArgumentParser()
p.add_argument('-v', action='store_true')
p.add_argument('-l', action='store_true')
p.add_argument('files', nargs='*', action='append')

args, unknown = p.parse_known_args()
while unknown:
args, unknown = p.parse_known_args(unknown, args)

print(args)

产量

Namespace(files=[['a', 'b'], ['c', 'd']], l=False, v=True)

关于python - argparse 位置内的可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26698246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com