gpt4 book ai didi

python - argparse 长选项的单破折号

转载 作者:太空狗 更新时间:2023-10-30 02:10:14 25 4
gpt4 key购买 nike

是否可以使用 argparse 将 --longoption 表示为 -longoption

argparse.prefix_chars不起作用,因为假定长选项会重复前缀 char。

我在想也许有一种方法可以关闭短选项并允许长选项使用单破折号而不是双破折号。像这样:

parser = argparse.ArgumentParser()
parser.turn_off_short_opts()

这能做到吗?如果没有,我可以使用什么来完成此任务?

最佳答案

单破折号长参数不是问题:

In [250]: p=argparse.ArgumentParser()

In [251]: p.add_argument('-longargument')
Out[251]: _StoreAction(option_strings=['-longargument'], dest='longargument', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)

In [252]: p.parse_args(['-long','test'])
Out[252]: Namespace(longargument='test')

In [253]: p.parse_args(['-l','test'])
Out[253]: Namespace(longargument='test')

我必须仔细检查代码,但我认为多头和空头选项之间的区别并不那么重要。创建操作时,所有内容都添加到 option_strings 属性中。长(多字符)字符串用于设置“dest”,但您也可以自己设置。

Duffy 引用的行为:longoption 意味着完全不同的事情:它意味着 -l -o -n -g -p -t -i 更加微妙。如果 -l-o 等都已定义并且不需要参数,它将使用解释。但它不会干扰 -longoption 的常规解释。但您应该了解此类解释,并在开发过程中进行测试。


下面是用于为可选值设置 dest 的代码:

    if dest is None:
if long_option_strings:
dest_option_string = long_option_strings[0]
else:
dest_option_string = option_strings[0]

就在这之前,它将带有 -- 的字符串收集到 long_option_string` 列表中。但如果没有这样的字符串,它会使用第一个字符串。

In [270]: p.add_argument('-longargument','-l','--longish')
Out[270]: _StoreAction(option_strings=['-longargument', '-l', '--longish'], dest='longish', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)

这里使用--longish代替-lonargument

唯一关注选项字符串长度的地方是 -xyz 的特殊处理,它关注单个字符串('-x'、'-y'、'-z ').

关于python - argparse 长选项的单破折号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31127366/

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