1 回答
TA贡献1804条经验 获得超7个赞
执行此类操作的一种干净方法是子类化ArgumentParser并创建您自己的:
import argparse
class MyArgumentParser(argparse.ArgumentParser):
def add_argument(self, *args, **kwargs):
# check if one was already passed, for backward compatibility
if not any(len(a) == 2 and a.startswith('-') for a in args):
for a in args:
if a.startswith('--'):
# you could do something more fancy here, like calling an (optional) callback
return super().add_argument(a[1:3], *args, **kwargs)
return super().add_argument(*args, **kwargs)
parser = MyArgumentParser(description='Dedupe library.', allow_abbrev=True)
parser.add_argument('--all', nargs='+', type=int, help='(Optional) Enter one or more IDs.', dest='all')
请注意,这不一定是个好主意。您可能有冲突的选项(例如多个以相同字母开头的选项,因此您可能需要为此添加代码)。然后,您可能会偏好哪个选项采用哪个字母以及多个选项。ETC。
最后,您必须问自己,像这样的解决方案所提供的“便利”是否真的超过了编写它的工作量、额外代码的开销以及为未来您和其他贡献者提供的结果代码的缺乏清晰度。想知道额外的选项是从哪里来的。更不用说明确说明您正在设置哪些选项可能只是一件好事?
只是某件事可以做,并不意味着你应该这样做。
添加回答
举报