argparse在解析命令行参数时,默认使用“--”来标识参数和选项。因此,如果我们想在参数中包含“--”,就需要告诉argparse停止解析命令行参数并将其余的参数传递给我们的代码。
可以使用parse_known_args()方法来实现这一点。parse_known_args()和parse_args()的作用相同,但是parse_known_args()可以返回一个包含未解析参数的元组,我们可以在自己的代码中使用这个元组进行进一步的处理。
以下是代码示例:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('arg', nargs='*')
args, unknown = parser.parse_known_args()
print('args:', args)
print('unknown:', unknown)
在这个例子中,我们没有指定命令行参数的选项,而是使用“nargs”来接受任意数量的参数。然后,我们使用parse_known_args()方法来解析命令行参数,将参数和未解析的部分作为元组返回。最后,我们打印出args和unknown的内容。
在命令行运行这个示例:
python script.py --foo bar -- --baz
输出将是:
args: Namespace(arg=['--foo', 'bar'])
unknown: ['--baz']
在这个例子中,我们在“--foo”参数后面添加了“--”来表示未解析部分的开始。这样,argparse就会将未解析的部分作为unknown返回,并将“--foo”作为普通的arg参数添加到args中。