gpt4 book ai didi

Python argparse 有一个带有单字符选项参数的错误(?)

转载 作者:行者123 更新时间:2023-11-28 22:30:01 24 4
gpt4 key购买 nike

我有这段代码解析命令行参数:

def handleCmdLineArgs(self):
parser = argparse.ArgumentParser()
parser.add_argument('-j','--juice', help='juice', default="")
parser.add_argument('-bx','--box', help='box', default="")
args,unknown = parser.parse_known_args()

当我运行带有以 j argparse 开头的参数的命令行时,在 -j 参数 argparse 将用单词的其余部分替换 -j 参数时:

例子:程序.py -j orange -jungle

argparse 将返回 args.juice = "ungle"而不是所需的 "orange"

我已经创建了一个解决方法,但我很好奇是否有其他人看到过这个或者知道它发生的原因?或者这可能是 argparse 中的错误?

最佳答案

这是预期的行为。对于单破折号选项,空格是可选的。所以这两个是等价的:

program.py -jorange
program.py -j orange

参见 Option value syntax section文档:

For short options (options only one character long), the option and its value can be concatenated:

>>> parser.parse_args(['-xX'])
Namespace(foo=None, x='X')

如果要传入orange -jungle作为值,需要在命令行中使用引号:

program.py -j "orange -jungle"

如果您想传递恰好以 - 开头的附加位置参数,请使用 -- 来表示选项标志的结尾:

program.py -j orange -- -jungle

参见 Arguments containing - section :

If you have positional arguments that must begin with - and don’t look like negative numbers, you can insert the pseudo-argument '--' which tells parse_args() that everything after that is a positional argument:

>>> parser.parse_args(['--', '-f'])
Namespace(foo='-f', one=None)

关于Python argparse 有一个带有单字符选项参数的错误(?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42686819/

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